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

Что я хочу:

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

Попытка 1

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

(require 'nrepl-ritz)

М-х 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:

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

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

ssh -L 42874:localhost:42874 -N mccarthy

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

(require 'nrepl-ritz)

М-х nrepl

Хост: 127.0.0.1

Порт: 42874

Это дает мне связь:

; nREPL 0.1.7-preview
user> 

Итак, чтобы проверить это, я бегу

М-х nrepl-ritz-threads

Это дает мне красивую таблицу потоков.

М-х nrepl-ritz-break-on-exception

user> (/ 1 0)

Результат

Это зависает, но иногда показывает скрытый буфер отладки с некоторыми доступными перезапусками. Если я скажу ему передать исключение обратно в программу, он никогда не вернет управление REPL.

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


person MattoxBeckman    schedule 11.03.2013    source источник
comment
(/ 1 0) - это зависает? Наверное, пытаюсь оценить бесконечность ... ;-)   -  person firefrorefiddle    schedule 11.03.2013
comment
Пробуем Attempt 2 на локальном компьютере, работает нормально? Это запускается lein ritz-repl, а затем подключается из emacs   -  person guilespi    schedule 23.10.2013
comment
Да, начиная с моей локальной машины все работало нормально. Проблемы возникают только с удаленными соединениями.   -  person MattoxBeckman    schedule 01.11.2013
comment
Если вы выполните следующие действия, все должно сработать: devcenter.heroku.com/articles/debugging-clojure   -  person Avanz    schedule 22.03.2014
comment
Уже ответил братан. stackoverflow.com/ questions / 22908315 / Это не совсем то, что вы ищете, но это поможет   -  person prestotron    schedule 25.06.2014
comment
Как бы глупо это ни звучало, похоже, что перезагрузка обеих машин в порядке. Вы уверены, что у вас нет других экземпляров того же программного обеспечения, которые скрываются в фоновом режиме и поэтому создают проблемы?   -  person Cninroh    schedule 21.10.2014
comment
Судя по количеству голосов, это, вероятно, более сложный процесс, чем перезапуск.   -  person nha    schedule 30.11.2014
comment
вы можете попробовать эту ссылку ianeslick.com/ 17.05.2013 /. это может помочь.   -  person RishiKesh Pathak    schedule 02.12.2014
comment
Вы только что сорвали джекпот в SO с этими вопросами, 1 от меня тоже. Хотя все эти технологии для меня в новинку.   -  person aspiring    schedule 04.12.2014
comment
В том маловероятном случае, если это ошибка ... сохраняйте спокойствие и [сообщите об этом]   -  person AMDG    schedule 08.12.2014
comment
вы можете попробовать drawbackz   -  person Parth Akbari    schedule 23.12.2014


Ответы (1)


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

Отсюда `Clojure - проблема с подключением при повторном запуске cider-jack-in < / а>

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

person SyedAliNaqi    schedule 24.01.2015