मैं क्या चाहता हूँ:
मेरे पास एक दूरस्थ साइट पर क्लोजर प्रोग्राम है, चलो इसे कॉल करें mccarthy। मैं जो करना चाहता हूं वह nrepl-ritzअपने लैपटॉप से कनेक्ट करना है , अधिमानतः उपयोग करना nrepl-ritz-jack-in। जैक एक स्थानीय कार्यक्रम के लिए ठीक काम करता है, लेकिन एक दूरस्थ कार्यक्रम से कनेक्ट नहीं होता है।
प्रयास करना १
C-x C-f पर /mccarthy:code/program/project.clj
(require 'nrepl-ritz)
M-x 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अपने लैपटॉप पर उपयोग कर रहा हूं, लेकिन नहीं mccarthy, इसलिए स्पष्ट रूप nrepl-ritz-jack-inसे पता नहीं लगा रहा है कि यह एक दूरस्थ फ़ाइल है। nrepl-jack-inहालांकि, इस मामले में उम्मीद के मुताबिक नियमित पुराने काम करेंगे।
प्रयास २
मैं भी एक शुरू करने की कोशिश की nrepl-ritzका उपयोग कर leinपर mccarthy:
mattox@mccarthy$ lein ritz-nrepl
nREPL server started on port 42874
अपने लैपटॉप से मैं एक बंदरगाह आगे तो स्थानीय 42874को जोड़ता है 42874पर mccarthy:
ssh -L 42874:localhost:42874 -N mccarthy
फिर, मेरे स्थानीय Emacs से:
(require 'nrepl-ritz)
M-x nrepl
मेज़बान: 127.0.0.1
बंदरगाह: 42874
यह मुझे एक कनेक्शन देता है:
; nREPL 0.1.7-preview
user>
इसलिए इसका परीक्षण करने के लिए, मैं दौड़ता हूं
M-x nrepl-ritz-threads
यह मुझे धागे की एक अच्छी तालिका देता है।
M-x nrepl-ritz-break-on-exception
user> (/ 1 0)
परिणाम
यह लटका हुआ है, लेकिन कभी-कभी उपलब्ध कुछ पुनरारंभ के साथ एक छिपे हुए डिबगिंग बफर को दिखाता है। अगर मैं इसे कार्यक्रम में अपवाद को पास करने के लिए कहता हूं, तो यह कभी भी REPL को नियंत्रण वापस नहीं देता है।
मैंने बहुत सारी खोजें की हैं लेकिन "अपने रास्ते पर लेइन सुनिश्चित करें" की तुलना में अधिक विशिष्ट कुछ भी प्राप्त करने में सक्षम नहीं हैं (और मैंने ऐसा किया, दोनों मशीनों पर ...)।
Attempt 2अपने स्थानीय मशीन में कोशिश कर रहा है , यह ठीक काम करता है? यह शुरू हो रहा है lein ritz-replऔर फिर emacs से जुड़ रहा है
(/ 1 0)- यह लटका हुआ है? शायद अनंत का मूल्यांकन करने की कोशिश कर रहा है ... ;-)