Comment puis-je faire nrepl-ritz-jack-in à distance via TRAMP / Emacs

Ce que je veux:

J’ai un programme clojure sur un site distant, appelons-le mccarthy . Ce que je veux faire est de nrepl-ritz connecter à un nrepl-ritz partir de mon ordinateur portable, de préférence en utilisant nrepl-ritz-jack-in . Le jack in fonctionne bien pour un programme local, mais ne semble pas se connecter à un programme distant.

Tentative 1

Cx Cf sur /mccarthy:code/program/project.clj

(require 'nrepl-ritz)

Mx nrepl-ritz-jack-in

Résultat

Emacs semble se bloquer. Si je vais au *nrepl-server* , 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 le drip -à- drip sur mon ordinateur portable, mais pas sur mccarthy , donc clairement nrepl-ritz-jack-in ne détecte pas qu’il s’agit d’un fichier distant. Les anciens nrepl-jack-in réguliers fonctionneront comme prévu dans ce cas, cependant.

Tentative 2

J’ai aussi essayé de lancer un nrepl-ritz utilisant lein on mccarthy :

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

De mon ordinateur portable, je 42874 un port pour que le local 42874 connecte au 42874 sur mccarthy :

 ssh -L 42874:localhost:42874 -N mccarthy 

Ensuite, à partir de mes Emacs locaux:

 (require 'nrepl-ritz) 

Mx nrepl

Hôte: 127.0.0.1

Port: 42874

Cela me donne un lien:

 ; nREPL 0.1.7-preview user> 

Donc, pour le tester, je cours

Mx nrepl-ritz-threads

Cela me donne une belle table de discussions.

Mx nrepl-ritz-break-on-exception

 user> (/ 1 0) 

Résultat

Cela se bloque, mais montre parfois un tampon de débogage caché avec des redémarrages disponibles. Si je lui demande de renvoyer l’exception au programme, il ne restitue jamais le contrôle REPL.

J’ai fait beaucoup de recherches mais je n’ai pas pu obtenir plus de précision que “assurez-vous que lein est sur votre chemin” (et je l’ai fait sur les deux machines …).

Si le repl est toujours en cours d’exécution depuis le cider-jack précédent, vous devez soit utiliser la commande cidercommand pour vous connecter à l’instance en cours, soit arrêter la précédente avant de commencer une nouvelle.

From Here ` Clojure – Problème de connexion, relance de cider-jack-in

Voir aussi ceci https://devcenter.heroku.com/articles/debugging-clojure