分享您的想法,请填写2024年Clojure调查问卷!

欢迎!请查看关于页面以了解更多关于该如何工作的信息。

+1 投票
Clojure

我在一些使用leiningen的项目中尝试使用Clojure的socket repl。

我在leidn配置文件中添加了以下内容

:jvm-opts ["-Dclojure.server.repl={:port 0 :accept clojure.core.server/repl}"]

我使用端口0,因为如果我使用硬编码值,我就无法运行多个socket repl,因为它们会指向同一个端口。

这可以工作,但是还不够好,因为我需要手动获取端口号(如下代码所示的代码)并用于与Emacs连接。

(.getLocalPort (get-in @#'clojure.core.server/servers ["repl" :socket]))

我想知道是否有任何自动化的方法。

1 个回答

0 投票

最佳回答
 
最佳答案

我的解决方案——针对Clojure CLI——是创建一个别名,以便在dev.clj文件中运行自己的“启动”代码。它将明确启动Socket REPL并报告使用的端口号。我已经多年没有使用lein了,但我想记得Leiningen可以在启动时运行特定的代码片段,所以我认为你可以将你的.getLocalPort调用放在这样的代码中。

此外,Clojure本身会在类路径上直接对user.clj进行加载数,所以这也是报告选择端口号的另一个途径。

by
谢谢,Sean。
...