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



lein emacs (1)

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

ここから ` Clojure - 接続の問題再実行サイダージャックイン

こちらも参照してhttps://devcenter.heroku.com/articles/debugging-clojure

私が望むもの:

私はリモートサイトにclojureプログラムを持っていmccarthy 。それをmccarthyと呼んでみましょう。 私がしたいことは、ラップトップからnrepl-ritz接続することですnrepl-ritz-jack-inを使用するのが望ましいです。 のジャックは、ローカルプログラムにとってうまく動作しますが、リモートプログラムに接続していないようです。

試行1

/mccarthy:code/program/project.clj Cx Cf

(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-ritz-jack-inはそれがリモートファイルであることを検出していません。 しかし、この場合、通常の古いnrepl-jack-inは期待通りに動作します。

試行2

私はleinmccarthyを使ってlein nrepl-ritzを起動しようとしmccarthy

[email protected]$ lein ritz-nrepl
nREPL server started on port 42874

私のラップトップから、私はポートを転送するので、ローカル4287442874接続し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> 

テストするために、私は走ります

Mx nrepl-ritz-threads

それは私にスレッドの良いテーブルを与えます。

Mx nrepl-ritz-break-on-exception

user> (/ 1 0)

結果

これはハングしますが、一部の再起動が可能な隠れたデバッグバッファが表示されることがあります。 例外をプログラムに戻すよう伝えれば、制御をREPLに戻すことは決してありません。

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





nrepl