Czego chcę:
Mam program clojure na zdalnej stronie, nazwijmy to mccarthy. Chcę połączyć się nrepl-ritzz laptopa, najlepiej za pomocą nrepl-ritz-jack-in. Gniazdo wejściowe działa dobrze dla programu lokalnego, ale wydaje się, że nie łączy się ze zdalnym programem.
Próba 1
C-x C-f na /mccarthy:code/program/project.clj
(require 'nrepl-ritz)
M-x nrepl-ritz-jack-in
Wynik
Emacs wydaje się zawiesić. Jeśli przejdę do *nrepl-server*bufora, zobaczę to:
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)
(i mnóstwo innych linii też ...)
Używam dripna swoim laptopie, ale nie jest włączony mccarthy, więc wyraźnie nrepl-ritz-jack-innie wykrywam, że jest to plik zdalny. nrepl-jack-inJednak normalne stare będą działać zgodnie z oczekiwaniami w tym przypadku.
Próba 2
Próbowałem także rozpocząć nrepl-ritzkorzystanie leinz mccarthy:
mattox@mccarthy$ lein ritz-nrepl
nREPL server started on port 42874
Z laptopa przesyłam port, więc lokalny 42874łączy się 42874z mccarthy:
ssh -L 42874:localhost:42874 -N mccarthy
Następnie z moich lokalnych Emacsa:
(require 'nrepl-ritz)
M-x nrepl
Gospodarz: 127.0.0.1
Port: 42874
To daje mi połączenie:
; nREPL 0.1.7-preview
user>
Aby to przetestować, biegnę
M-x nrepl-ritz-threads
Daje mi to niezłą tabelę wątków.
M-x nrepl-ritz-break-on-exception
user> (/ 1 0)
Wynik
Zawiesza się, ale czasami pokazuje ukryty bufor debugowania z dostępnymi ponownymi uruchomieniami. Jeśli powiem, aby przekazał wyjątek z powrotem do programu, nigdy nie daje to kontroli REPL.
Przeprowadziłem wiele wyszukiwań, ale nie byłem w stanie uzyskać niczego bardziej szczegółowego niż „upewnić się, że lein jest na twojej drodze” (I zrobiłem to, na obu komputerach ...).
Attempt 2komputerze lokalnym działa dobrze? To zaczyna się, lein ritz-repla następnie łączy z emacsa
(/ 1 0)- to się zawiesza? Prawdopodobnie próbuje ocenić nieskończoność ... ;-)