Що я хочу:
У мене на віддаленому сайті є програма 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
Однак, звичайний старий буде працювати, як очікувалося, у цьому випадку.
Спроба 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)
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.
Я здійснив багато пошуків, але не зміг отримати щось більш конкретне, ніж "переконайтесь, що лейн на вашому шляху" (І я це робив, на обох машинах ...).
Attempt 2
у вашій локальній машині, це працює добре? Це починається, lein ritz-repl
а потім з'єднується з emacs
(/ 1 0)
- це висить? Можливо, намагаються оцінити нескінченність ... ;-)