如何通过TRAMP / Emacs使nrepl-ritz-jack-in远程工作
我想要的是:
我在远程站点上有一个clojure程序,我们称之为mccarthy
。 我想要做的是从我的笔记本电脑连接到nrepl-ritz
,最好使用nrepl-ritz-jack-in
。 杰克在工作正常的本地程序,但似乎并没有连接到远程程序。
尝试1
Cx Cf在/mccarthy:code/program/project.clj
(require 'nrepl-ritz)
Mx 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
nrepl-ritz
开始nrepl-ritz
:
mattox@mccarthy$ lein ritz-nrepl nREPL server started on port 42874
从我的笔记本电脑我转发一个端口,所以本地42874
连接到mccarthy
:
ssh -L 42874:localhost:42874 -N mccarthy
然后,从我当地的Emacs:
(require 'nrepl-ritz)
Mx nrepl
主机: 127.0.0.1
港口: 42874
这给了我一个连接:
; nREPL 0.1.7-preview user>
所以要testing一下,我跑
Mx nrepl-ritz-threads
它给了我一个很好的线程表。
Mx nrepl-ritz-break-on-exception
user> (/ 1 0)
结果
这个挂起,但有时会显示一个隐藏的debugging缓冲区,有一些可用的重新启动。 如果我告诉它将exception传递回程序,它永远不会将控制权交还给REPL。
我已经做了大量的search,但是一直没有得到比“确定你的路线上的东西更具体”的东西(而且我在两台机器上都这样做了)。
如果repl仍然从前面的cider-jack-in运行,则应该使用cidercommand连接到正在运行的实例,或者在启动一个新的实例之前停止它
从这里` Clojure – 连接问题重新运行苹果酒插孔
另见https://devcenter.heroku.com/articles/debugging-clojure