web-dev-qa-db-fra.com

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

Ce que je veux:

J'ai un programme de clojure sur un site distant, appelons-le mccarthy. Ce que je veux faire, c'est me connecter à un nrepl-ritz de mon ordinateur portable, de préférence avec nrepl-ritz-jack-in. La prise marche 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 pendre. Si je vais au *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 clairement nrepl-ritz-jack-in ne détecte pas qu'il s'agit d'un fichier distant. Vieux régulière nrepl-jack-in fonctionnera comme prévu dans ce cas, cependant.

Tentative 2

J'ai aussi essayé de démarrer un nrepl-ritz en utilisant lein sur mccarthy:

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

De mon ordinateur portable je transfère un port si local 42874 se connecte à 42874 sur mccarthy:

ssh -L 42874:localhost:42874 -N mccarthy

Ensuite, de mon Emacs local:

(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 certains redémarrages disponibles. Si je lui dis de renvoyer l'exception au programme, il ne restituera jamais le contrôle au REPL.

J'ai fait beaucoup de recherches mais je n'ai pas pu obtenir quelque chose de plus spécifique que "assurez-vous que lein est sur votre chemin" (et c'est ce que j'ai fait, sur les deux machines ...).

298
MattoxBeckman

Si la réplique est toujours en cours d'exécution à partir de la précédente prise de cidre, vous devez utiliser la commande cidercommand pour vous connecter à l'instance en cours ou arrêter la précédente avant d'en démarrer une nouvelle.

À partir d'ici ` Clojure - Problème de connexion lors de la relance de cider-jack-in

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

1
Syed Ali Naqi