Lo que quiero:
Tengo un programa clojure en un sitio remoto, llamémoslo mccarthy
. Lo que quiero hacer es conectarme a una nrepl-ritz
desde mi computadora portátil, preferiblemente usando nrepl-ritz-jack-in
. El conector funciona bien para un programa local, pero no parece conectarse a un programa remoto.
Intento 1
C-x C-f en /mccarthy:code/program/project.clj
(require 'nrepl-ritz)
M-x nrepl-ritz-jack-in
Resultado
Parece que Emacs se cuelga. Si voy al *nrepl-server*
búfer, veo esto:
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.flatland.drip.Main.invoke(Main.java:117)
at org.flatland.drip.Main.start(Main.java:88)
at org.flatland.drip.Main.main(Main.java:64)
Caused by: java.lang.AssertionError: Assert failed: project
at leiningen.ritz_nrepl$start_jpda_server.invoke(ritz_nrepl.clj:23)
at leiningen.ritz_nrepl$ritz_nrepl.doInvoke(ritz_nrepl.clj:95)
(y toneladas de otras líneas, también ...)
Estoy usando drip
en mi computadora portátil, pero no en mccarthy
, así que claramente nrepl-ritz-jack-in
no está detectando que es un archivo remoto. nrepl-jack-in
Sin embargo, el viejo normal funcionará como se espera en este caso.
Intento 2
También intenté comenzar a nrepl-ritz
usar lein
en mccarthy
:
mattox@mccarthy$ lein ritz-nrepl
nREPL server started on port 42874
Desde mi portátil puedo reenviar un puerto tan local 42874
se conecta a 42874
en mccarthy
:
ssh -L 42874:localhost:42874 -N mccarthy
Entonces, de mi Emacs local:
(require 'nrepl-ritz)
M-x nrepl
Anfitrión: 127.0.0.1
Puerto: 42874
Esto me da una conexión:
; nREPL 0.1.7-preview
user>
Entonces, para probarlo, corro
M-x nrepl-ritz-threads
Me da una buena mesa de hilos.
M-x nrepl-ritz-break-on-exception
user> (/ 1 0)
Resultado
Esto se cuelga, pero a veces muestra un búfer de depuración oculto con algunos reinicios disponibles. Si le digo que pase la excepción al programa, nunca le devolverá el control al REPL.
He realizado muchas búsquedas, pero no he podido obtener nada más específico que "asegurarme de que Lein esté en tu camino" (y lo hice, en ambas máquinas ...).
Attempt 2
en su máquina local, ¿funciona bien? Eso comienza lein ritz-repl
y luego se conecta desde emacs
(/ 1 0)
- esto se cuelga? Probablemente tratando de evaluar el infinito ... ;-)