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


299

我想要的是:

我在远程站点上有一个Clojure程序,我们称它为mccarthy。我想做的是nrepl-ritz从笔记本电脑连接到,最好使用nrepl-ritz-jack-in。插孔可用于本地程序,但似乎无法连接到远程程序。

尝试1

C-x C-f/mccarthy:code/program/project.clj

(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但是,在这种情况下,常规的old 将可以正常工作。

尝试2

我也尝试在上开始nrepl-ritz使用:leinmccarthy

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

从我的笔记本电脑,我转发端口,因此本地42874所连接到42874mccarthy

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。

我已经进行了很多搜索,但是没有比“确保您的足迹已经走到尽头”更具体的了(而且我在两台机器上都做到了……)。


44
(/ 1 0)-挂了吗?可能试图评估无穷大... ;-)
firefrorefiddle

8
Attempt 2在您的本地计算机上尝试,它可以正常工作吗?那是lein ritz-repl从emacs 开始然后进行连接
Guillermo Winkler 2013年

4
是的,从我的本地计算机开始运行正常。只是远程连接有麻烦。
MattoxBeckman

5
如果您按照以下步骤操作,它将可以正常工作:devcenter.heroku.com/articles/debugging-clojure
Avanz 2014年

6
兄弟已经回答了。stackoverflow.com/questions/22908315/…并不是您要找的东西,它会有所帮助
prestotron 2014年

Answers:


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.