如何通过TRAMP / Emacs远程控制nrepl-ritz-jack-in工作

时间:2013-03-11 03:38:39

标签: emacs clojure nrepl

我想要的是什么:

我在远程网站上有一个clojure程序,我们称之为mccarthy。 我想要做的是从我的笔记本电脑连接到nrepl-ritz,最好使用nrepl-ritz-jack-in。插孔适用于本地程序,但似乎没有连接到远程程序。

尝试1

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

C-x C-f

(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没有检测到它是远程文件。但是,在这种情况下,常规旧nrepl-ritz将按预期工作。

尝试2

我还尝试在lein上使用mccarthy开始mattox@mccarthy$ lein ritz-nrepl nREPL server started on port 42874

42874

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

(require 'nrepl-ritz)

然后,从我当地的Emacs:

nrepl

M-x 127.0.0.1

主持人:42874

端口:; nREPL 0.1.7-preview user>

这给了我一个联系:

nrepl-ritz-threads

所以为了测试它,我运行

M-x nrepl-ritz-break-on-exception

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

M-x user> (/ 1 0)

{{1}}

结果

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

我已经做了大量的搜索,但是没有能够得到比“确保lein在你的路上”更具体的东西(而且我确实在两台机器上都这样做了。)。

1 个答案:

答案 0 :(得分:1)

  

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

从此处Clojure - connection issue re-running cider-jack-in

另见https://devcenter.heroku.com/articles/debugging-clojure