2024 年 Clojure 状态调查!中分享您的想法。

欢迎!请查看关于页面了解有关如何使用本站的一些更多信息。

+1
Clojure

我在某个使用 lein 的项目中尝试使用 Clojure 的套接字 repl。

我将其添加到了我的 lein 配置文件中

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

我使用端口 0,因为如果我使用某些硬编码的值,则无法运行多个套接字 repl,因为它们会指向相同的端口。

这可以使用,但仍然有些痛苦,因为我需要手动获取端口号码(请参见下面的代码)并使用该端口与 Emacs 建立连接。

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

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

1 个回答

0

已被 选择
 
最佳答案

我的解决方案--对于 Clojure 命令行工具--是有一个别名,它会运行一个位于 dev.clj 文件中的“启动”代码。它明确启动 Socket REPL 并报告使用的端口。我已经好几年没有使用 lein 了,但似乎记得你可以告诉 Leiningen 在启动时运行一些代码,所以我认为你可以将你的 .getLocalPort 调用放入这样的代码中。

此外,Clojure 本身如果直接在类路径上加载 user.clj,也将加载它,这是报告选择端口的另一个途径。

谢谢,Sean。
...