Як я можу змусити віддалено працювати nrepl-ritz-jack над TRAMP / Emacs


299

Що я хочу:

У мене на віддаленому сайті є програма 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.

Я здійснив багато пошуків, але не зміг отримати щось більш конкретне, ніж "переконайтесь, що лейн на вашому шляху" (І я це робив, на обох машинах ...).


44
(/ 1 0)- це висить? Можливо, намагаються оцінити нескінченність ... ;-)
firefrorefiddle

8
Пробуючи Attempt 2у вашій локальній машині, це працює добре? Це починається, lein ritz-replа потім з'єднується з emacs
Гільєрмо Вінклер

4
Так, починаючи з моєї місцевої машини, працював чудово. Проблеми мають лише віддалені зв’язки.
MattoxBeckman

5
Якщо ви виконаєте наступні дії , він повинен працювати: devcenter.heroku.com/articles/debugging-clojure
Avanz

6
Вже відповів брато. stackoverflow.com/questions/22908315/… Це не зовсім те, що ви шукаєте, але це допоможе
prestotron

Відповіді:


1

Якщо repl все ще працює з попереднього cider-jack-in, вам слід або використовувати cidercommand для підключення до запущеного екземпляра, або зупинити попереднє перед запуском нового

Звідси ` Clojure - проблема з підключенням

Переконайтесь також у цьому https://devcenter.heroku.com/articles/debugging-clojure

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.