Как я могу сделать работу nrepl-ritz-jack-in удаленно над TRAMP/Emacs

Что я хочу:

У меня есть программа clojure на удаленном сайте, позвоните на нее mccarthy. Я хочу подключиться к nrepl-ritz с моего ноутбука, предпочтительно используя nrepl-ritz-jack-in. Джек работает отлично для локальной программы, но, похоже, не подключается к удаленной программе.

Попытка 1

C-x C-f on /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 с помощью lein на mccarthy:

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

Из моего ноутбука я пересылаю порт, поэтому локальный 42874 подключается к 42874 на mccarthy:

ssh -L 42874:localhost:42874 -N mccarthy

Затем из моего локального Emacs:

(require 'nrepl-ritz)

M-x nrepl

Host: 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.

Я сделал много запросов, но не смог получить ничего более конкретного, чем "убедитесь, что лейн на вашем пути" (И ​​я сделал это на обеих машинах...).

Ответ 1

Если реплика все еще выполняется из предыдущего сидра, вы должны либо использовать команду cidercommand для подключения к исполняемому экземпляру, либо остановить предыдущий, прежде чем запускать новый

From Here `Clojure - проблема с подключением повторного запуска cider-jack

Также см. этот https://devcenter.heroku.com/articles/debugging-clojure