Как запустить сокет REPL в Clojure 1.8 из leiningen или boot?

в следующей ссылке http://clojure.org/reference/repl_and_main#_launching_a_socket_server

Он имеет подробную информацию о том, как запустить socket REPL form java, но так как я использую lein, так как начать с lein. Если запуск с загрузки хорош для запуска, я также могу попробовать использовать boot.

2 ответов


чтобы запустить сокет repl, вам нужно передать эту опцию в JVM

-Dclojure.server.repl="{:port 5555 :accept clojure.core.server/repl}"

в Лейнингене добавьте это в свой project.clj.

:jvm-opts ["-Dclojure.server.repl={:port 5555 :accept clojure.core.server/repl}"] ; notice that the map is not quoted.

и при загрузке экспортируйте переменную окружения BOOT_JVM_OPTIONS

export BOOT_JVM_OPTIONS='-Dclojure.server.repl="{:port 5555 :accept clojure.core.server/repl}"'

как только ваш REPL работает, вы можете запустить telnet С другого терминала для подключения к разъему REPL. REPLception!

$ telnet 127.0.0.1 5555
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
user=> (+ 1 1)
2
user=>

boot имеет предстоящий socket-server задание. Начиная с boot 2.7.1, версия, включающая эту задачу, еще не выпущена.

тем временем вы можете использовать следующие команды для запуска Socket REPLs. Чтобы запустить процесс Clojure с сокетом REPL, прослушивающим порт 50505 с помощью загрузки, используйте:

boot -i "(do (require 'clojure.core.server) (clojure.core.server/start-server {:port 50505 :name :repl :accept 'clojure.core.server/repl}))" wait

Использование Leiningen:

JVM_OPTS='-Dclojure.server.myrepl={:port,50505,:accept,clojure.core.server/repl}' lein repl

используя боль Clojure банку:

java -Dclojure.server.myrepl="{:port 50505 :accept clojure.core.server/repl}" -jar ~/.m2/repository/org/clojure/clojure/1.8.0/clojure-1.8.0.jar