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

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

私が欲しいもの:

リモート サイトに Clojure プログラムがあります。これを と呼びます。ラップトップからmccarthyに接続したいのですが、できれば を使用します。ジャックインはローカル プログラムでは正常に機能しますが、リモート プログラムには接続できないようです。nrepl-ritznrepl-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ただし、この場合、通常の は期待どおりに動作します。

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

いろいろ検索してみましたが、「lein がパス上にあることを確認してください」というより具体的な答えは見つかりませんでした (そして、私は両方のマシンでそれを実行しました...)。

ベストアンサー1

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

ここから`Clojure - cider-jack-in の再実行時の接続の問題

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

おすすめ記事