nrepl-ritz-jack-inをTRAMP / Emacs経由でリモートで機能させるにはどうすればよいですか


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使用leinを開始しようとしましたmccarthy

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に制御が戻されることはありません。

私はたくさんの検索を行いましたが、「leinがあなたのパスにあることを確認する」(そして私は両方のマシンでそうしました...)より具体的なものを得ることができませんでした。


44
(/ 1 0)-これがハングする?おそらく無限大を評価しようとしています... ;-)
firefrorefiddle 2013年

8
Attempt 2あなたのローカルマシンで試して、それは大丈夫ですか?それが始まりlein ritz-repl、emacsから接続しています
Guillermo Winkler

4
はい、私のローカルマシンから始めてうまくいきました。問題があるのは、リモート接続だけです。
MattoxBeckman 2013年

5
次の手順を実行すると、機能するはずです。devcenter.heroku.com
articles

6
すでに仲間に答えました。stackoverflow.com/questions/22908315/…それはまさにあなたが探しているものではありませんが、役に立ちます
prestotron

回答:


1

replが以前のcider-jack-inからまだ実行されている場合は、ciderコマンドを使用して実行中のインスタンスに接続するか、新しいインスタンスを開始する前に以前のインスタンスを停止する必要があります

From Here ` Clojure-cider-jack-inを再実行する接続の問題

こちらもご覧ください https://devcenter.heroku.com/articles/debugging-clojure

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.