O que eu quero:
Eu tenho um programa de clojure em um site remoto, vamos chamá-lo mccarthy
. O que eu quero fazer é conectar a um nrepl-ritz
do meu laptop, de preferência usando nrepl-ritz-jack-in
. A entrada funciona bem para um programa local, mas parece não se conectar a um programa remoto.
Tentativa 1
C-x C-f em /mccarthy:code/program/project.clj
(require 'nrepl-ritz)
M-x nrepl-ritz-jack-in
Resultado
O Emacs parece travar. Se eu for para o *nrepl-server*
buffer, vejo o seguinte:
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)
(e toneladas de outras linhas também ...)
Estou usando drip
no meu laptop, mas não no mccarthy
, portanto, claramente nrepl-ritz-jack-in
não está detectando que é um arquivo remoto. nrepl-jack-in
No entanto, a idade normal funcionará como esperado neste caso.
Tentativa 2
Eu também tentei iniciar um nrepl-ritz
uso lein
em mccarthy
:
mattox@mccarthy$ lein ritz-nrepl
nREPL server started on port 42874
Do meu laptop I encaminhar uma porta para que locais 42874
Ligações para 42874
on mccarthy
:
ssh -L 42874:localhost:42874 -N mccarthy
Então, do meu Emacs local:
(require 'nrepl-ritz)
M-x nrepl
Hospedeiro: 127.0.0.1
Porta: 42874
Isso me dá uma conexão:
; nREPL 0.1.7-preview
user>
Então, para testá-lo, eu corro
M-x nrepl-ritz-threads
Isso me dá uma boa tabela de tópicos.
M-x nrepl-ritz-break-on-exception
user> (/ 1 0)
Resultado
Isso trava, mas às vezes mostra um buffer de depuração oculto com algumas reinicializações disponíveis. Se eu disser para devolver a exceção ao programa, ele nunca devolve o controle ao REPL.
Eu fiz muitas pesquisas, mas não consegui obter nada mais específico do que "verifique se o lein está no seu caminho" (e eu fiz isso nas duas máquinas ...).
Attempt 2
na sua máquina local, funciona ok? Isso está começando lein ritz-repl
e, em seguida, conectando de emacs
(/ 1 0)
- isso trava? Provavelmente tentando avaliar o infinito ... ;-)