Những gì tôi muốn:
Tôi có một chương trình clojure trên một trang web từ xa, hãy gọi nó mccarthy. Những gì tôi muốn làm là kết nối với một nrepl-ritztừ máy tính xách tay của tôi, tốt nhất là sử dụng nrepl-ritz-jack-in. Giắc cắm hoạt động tốt cho một chương trình cục bộ, nhưng dường như không kết nối với một chương trình từ xa.
Cố gắng 1
C-x C-f trên /mccarthy:code/program/project.clj
(require 'nrepl-ritz)
M-x nrepl-ritz-jack-in
Kết quả
Emacs xuất hiện để treo. Nếu tôi đi đến *nrepl-server*bộ đệm, tôi thấy điều này:
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)
(và hàng tấn các dòng khác, quá ...)
Tôi đang sử dụng driptrên máy tính xách tay của mình, nhưng không bật mccarthy, vì vậy rõ ràng nrepl-ritz-jack-inlà không phát hiện ra rằng đó là một tệp từ xa. Thường xuyên cũ nrepl-jack-insẽ làm việc như mong đợi trong trường hợp này, tuy nhiên.
Cố gắng 2
Tôi cũng đã thử bắt đầu nrepl-ritzsử dụng leintrên mccarthy:
mattox@mccarthy$ lein ritz-nrepl
nREPL server started on port 42874
Từ máy tính xách tay của tôi, tôi chuyển tiếp một cổng để địa phương 42874kết nối với 42874trên mccarthy:
ssh -L 42874:localhost:42874 -N mccarthy
Sau đó, từ Emacs địa phương của tôi:
(require 'nrepl-ritz)
M-x nrepl
Tổ chức: 127.0.0.1
Hải cảng: 42874
Điều này cho tôi một kết nối:
; nREPL 0.1.7-preview
user>
Vì vậy, để kiểm tra nó, tôi chạy
M-x nrepl-ritz-threads
Nó cho tôi một bảng chủ đề tốt đẹp.
M-x nrepl-ritz-break-on-exception
user> (/ 1 0)
Kết quả
Điều này bị treo, nhưng đôi khi hiển thị một bộ đệm gỡ lỗi ẩn với một số khởi động lại có sẵn. Nếu tôi bảo nó chuyển ngoại lệ trở lại chương trình, nó sẽ không bao giờ trả lại quyền kiểm soát cho REPL.
Tôi đã thực hiện rất nhiều tìm kiếm nhưng không thể có được bất cứ điều gì cụ thể hơn là "đảm bảo rằng lein đang trên đường của bạn" (Và tôi đã làm điều đó, trên cả hai máy ...).
Attempt 2trong máy cục bộ của bạn, nó hoạt động tốt chứ? Đó là bắt đầu lein ritz-replvà sau đó kết nối từ emacs
(/ 1 0)- cái này treo? Có lẽ đang cố gắng đánh giá vô cùng ... ;-)