मैं TRAMP/Emacs पर दूरस्थ रूप से काम में nrepl-ritz-jack-make कैसे बना सकता हूं



clojure (1)

यदि प्रतिलिपि अभी भी पिछले साइडर-जैक-इन से चल रही है, तो आपको या तो चल रहे इंस्टेंस से कनेक्ट करने के लिए साइडर कमांड का उपयोग करना चाहिए, या एक नया शुरू करने से पहले पिछले को रोकना चाहिए

यहां से ' क्लोजर - कनेक्शन समस्या फिर से चलने वाले साइडर-जैक-इन

यह भी https://devcenter.heroku.com/articles/debugging-clojure

मैं क्या चाहता हूँ:

मेरे पास एक दूरस्थ साइट पर क्लोजर प्रोग्राम है, चलिए इसे mccarthy कहते हैं। मैं अपने लैपटॉप से ​​एक nrepl-ritz से कनेक्ट करना चाहता हूं, अधिमानतः nrepl-ritz-jack-in । जैक एक स्थानीय कार्यक्रम के लिए ठीक काम करता है, लेकिन एक दूरस्थ कार्यक्रम से कनेक्ट नहीं लगता है।

प्रयास 1

सीएक्स सीएफ / /mccarthy:code/program/project.clj पर

(require 'nrepl-ritz)

एमएक्स 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 का उपयोग कर रहा हूं, लेकिन nrepl-ritz-jack-in पर नहीं, इसलिए स्पष्ट रूप से nrepl-ritz-jack-in यह पता नहीं लगा रहा है कि यह एक दूरस्थ फ़ाइल है। हालांकि, इस मामले में नियमित पुराने nrepl-jack-in काम करेगा।

प्रयास 2

मैंने nrepl-ritz का उपयोग करके एक nrepl-ritz शुरू करने का भी प्रयास किया:

[email protected]$ lein ritz-nrepl
nREPL server started on port 42874

मेरे लैपटॉप से ​​मैं एक बंदरगाह अग्रेषित करता हूं ताकि स्थानीय 42874 42874 पर 42874 जुड़ सके:

ssh -L 42874:localhost:42874 -N mccarthy

फिर, मेरे स्थानीय Emacs से:

(require 'nrepl-ritz)

एमएक्स nrepl

होस्ट: 127.0.0.1

पोर्ट: 42874

यह मुझे एक कनेक्शन देता है:

; nREPL 0.1.7-preview
user> 

तो इसका परीक्षण करने के लिए, मैं दौड़ता हूं

एमएक्स nrepl-ritz-threads

यह मुझे धागे की एक अच्छी मेज देता है।

एमएक्स nrepl-ritz-break-on-exception

user> (/ 1 0)

परिणाम

यह लटकता है, लेकिन कभी-कभी उपलब्ध कुछ पुनरारंभ के साथ एक छिपी हुई डिबगिंग बफर दिखाता है। यदि मैं इसे प्रोग्राम में अपवाद पास करने के लिए कहता हूं, तो यह कभी भी आरईपीएल पर नियंत्रण नहीं देता है।

मैंने बहुत सी खोज की हैं लेकिन "सुनिश्चित करें कि लीन आपके रास्ते पर है" (और मैंने यह किया है, दोनों मशीनों पर ...) से कुछ और विशिष्ट नहीं मिला है।





nrepl