Sometimes I want to open a remote socket repl from my repl, but Clojure does not provide a way to do this out of the box.
To give it a try, you need a socket repl available on the network. You can start it with this shell command:
$ clj "-J-Dclojure.server.repl={:port 5555 :accept clojure.core.server/repl}"
Now you can connect to that process from another process
$ clj -Sdeps '{:deps {vlaaad/remote-repl {:mvn/version "1.1"}}}'
Clojure 1.10.1
user=> (require '[vlaaad.remote-repl :as rr])
nil
user=> (rr/repl :port 5555)
;; at this point, forms sent to the repl are evaluated on the remote process
user=> (System/getProperty "clojure.server.repl")
"{:port 5555 :accept clojure.core.server/repl}"
user=> :repl/quit
;; now we are back to evaluating in our local process.
nil
user=>
You can use -main
to immediately drop into a remote repl:
$ clj -Sdeps '{:deps {vlaaad/remote-repl {:mvn/version "1.1"}}}' -m vlaaad.remote-repl :port 5555
user=> (System/getProperty "clojure.server.repl")
"{:port 5555 :accept clojure.core.server/repl}"
user=> :repl/quit
This project is similar to tubular, but smaller (only 50 lines of code and no dependencies). It is inspired by clojure.core.server/remote-prepl, but does not require its target to be a prepl.
Can you improve this documentation?Edit on GitHub
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close