如何使nrepl-ritz-jack-in在TRAMP / Emacs上远程工作

我想要的是:

我在一个远程站点上有一个clojure程序,让我们称它为mccarthy。 我想做的是从我的笔记本电脑连接到nrepl-ritz,最好使用nrepl-ritz-jack-in。对于本地程序,插孔工作正常,但似乎不能连接到远程程序

尝试1

/mccarthy:code/program/project.clj上的cx氟

(require 'nrepl-ritz)

m x nrepl-ritz-jack-in

结果

Emacs似乎挂起了。如果我进入*nrepl-server*缓冲区,我会看到:

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)

(还有很多其他的台词……)

我在我的笔记本电脑上使用drip,但不是在mccarthy上,所以很明显nrepl-ritz-jack-in没有检测到它是一个远程文件。常规的旧nrepl-jack-in将在这种情况下正常工作。

尝试2

我还尝试在mccarthy上使用lein启动nrepl-ritz:

mattox@mccarthy$ lein ritz-nrepl
nREPL server started on port 42874

从我的笔记本电脑,我转发一个端口,以便本地42874连接到mccarthy上的42874:

ssh -L 42874:localhost:42874 -N mccarthy

然后,从我本地的Emacs:

(require 'nrepl-ritz)

m x nrepl

主持人:127.0.0.1

端口:42874

这给了我一个联系:

; nREPL 0.1.7-preview
user>

为了验证,我跑了

m x nrepl-ritz-threads

它给了我一个很好的线程表。

m x nrepl-ritz-break-on-exception

user> (/ 1 0)

结果

这会挂起,但有时会显示一个隐藏的调试缓冲区,其中有一些重启可用。如果我告诉它将异常传递回程序,它永远不会将控制权交还给REPL。

我已经做了大量的搜索,但没有能够得到任何更具体的比“确保lein在你的路径上”(我确实这样做了,在两台机器上…)

17609 次浏览

如果repl仍然在运行之前的cider-jack-in,你应该使用cider命令连接到正在运行的实例,或者在启动一个新的实例之前停止前一个实例

From Here `Clojure连接问题重新运行apple -jack-in

也可以看到这个https://devcenter.heroku.com/articles/debugging-clojure