Ce que je veux:
J'ai un programme de fermeture sur un site distant, appelons-le mccarthy
. Ce que je veux faire, c'est me connecter à un nrepl-ritz
ordinateur portable, de préférence en utilisant nrepl-ritz-jack-in
. La prise jack fonctionne bien pour un programme local, mais ne semble pas se connecter à un programme distant.
Tentative 1
C-x C-f sur /mccarthy:code/program/project.clj
(require 'nrepl-ritz)
M-x nrepl-ritz-jack-in
Résultat
Emacs semble se bloquer. Si je vais dans le *nrepl-server*
tampon, je vois ceci:
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)
(et des tonnes d'autres lignes aussi ...)
J'utilise drip
sur mon ordinateur portable, mais pas sur mccarthy
, donc nrepl-ritz-jack-in
ne détecte clairement pas qu'il s'agit d'un fichier distant. Regular oldnrepl-jack-in
standard fonctionnera comme prévu dans ce cas, cependant.
Tentative 2
J'ai également essayé de démarrer une nrepl-ritz
utilisation lein
sur mccarthy
:
mattox@mccarthy$ lein ritz-nrepl
nREPL server started on port 42874
De mon ordinateur portable , je transmets un port si locaux se 42874
connecte à 42874
le mccarthy
:
ssh -L 42874:localhost:42874 -N mccarthy
Ensuite, de mes Emacs locaux:
(require 'nrepl-ritz)
M-x nrepl
Hôte: 127.0.0.1
Port: 42874
Cela me donne une connexion:
; nREPL 0.1.7-preview
user>
Donc pour le tester, je cours
M-x nrepl-ritz-threads
Cela me donne une belle table de fils.
M-x nrepl-ritz-break-on-exception
user> (/ 1 0)
Résultat
Cela se bloque, mais affiche parfois un tampon de débogage caché avec des redémarrages disponibles. Si je lui dis de renvoyer l'exception au programme, il ne redonne jamais le contrôle au REPL.
J'ai fait beaucoup de recherches mais je n'ai pas pu obtenir quelque chose de plus précis que "assurez-vous que lein est sur votre chemin" (et je l'ai fait, sur les deux machines ...).
Attempt 2
dans votre machine locale, ça marche bien? Cela commence lein ritz-repl
et se connecte ensuite depuis emacs
(/ 1 0)
- ça se bloque? J'essaie probablement d'évaluer l'infini ... ;-)