clojure como - ¿Cómo puedo hacer que nrepl-ritz-jack-in funcione a distancia sobre TRAMP / Emacs?




mi de (2)

Si la respuesta todavía se está ejecutando desde el anterior cider-jack-in, debe usar el comando cidercommand para conectarse a la instancia en ejecución, o detener la anterior antes de comenzar una nueva

From Here ` Clojure - problema de conexión que vuelve a ejecutar sider-jack-in

También vea este https://devcenter.heroku.com/articles/debugging-clojure

Lo que quiero:

Tengo un programa de clojure en un sitio remoto, llamémoslo mccarthy . Lo que quiero hacer es conectarme a un 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

Cx Cf en /mccarthy:code/program/project.clj

(require 'nrepl-ritz)

Mx nrepl-ritz-jack-in

Resultado

Emacs parece colgarse. Si voy al *nrepl-server* , 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 el drip en mi computadora portátil, pero no en mccarthy , así que claramente nrepl-ritz-jack-in no detecta que se trata de un archivo remoto. Sin nrepl-jack-in antiguo nrepl-jack-in funcionará como se espera en este caso.

Intento 2

También intenté iniciar un nrepl-ritz usando lein en mccarthy :

[email protected]$ lein ritz-nrepl
nREPL server started on port 42874

Desde mi computadora portátil reenvío un puerto para que el local 42874 conecte al 42874 en mccarthy :

ssh -L 42874:localhost:42874 -N mccarthy

Entonces, desde mi local Emacs:

(require 'nrepl-ritz)

Mx nrepl

Anfitrión: 127.0.0.1

Puerto: 42874

Esto me da una conexión:

; nREPL 0.1.7-preview
user> 

Así que para probarlo, corro

Mx nrepl-ritz-threads

Me da una bonita tabla de hilos.

Mx nrepl-ritz-break-on-exception

user> (/ 1 0)

Resultado

Esto se bloquea, pero a veces muestra un búfer de depuración oculto con algunos reinicios disponibles. Si le digo que devuelva la excepción al programa, nunca le devolverá el control al REPL.

He hecho muchas búsquedas pero no he podido obtener nada más específico que "asegurarte de que lein esté en tu camino" (Y lo hice, en ambas máquinas ...).






emacs clojure nrepl