带有 nrepl 的 lein ring 服务器不支持 cider-nrepl
lein ring server with nrepl doesn't honour cider-nrepl
当我使用 lein ring server
启动当前项目并尝试通过苹果酒从 Emacs 连接到它时,我收到以下警告:
; CIDER 0.8.2 (Java 1.7.0_51, Clojure 1.6.0, nREPL 0.2.6)
WARNING: The following required nREPL ops are not supported:
apropos classpath complete eldoc info inspect-start inspect-refresh inspect-pop inspect-push inspect-reset macroexpand ns-list ns-vars resource stacktrace toggle-trace-var toggle-trace-ns undef
Please, install (or update) cider-nrepl 0.8.2 and restart CIDER
user>
但是,我的 project.clj
中确实有 [cider/cider-nrepl "0.8.2"]
的依赖项。当我 运行 lein repl
并且我可以从苹果酒连接到它时,这工作得很好:
; CIDER 0.8.2 (Java 1.7.0_51, Clojure 1.6.0, nREPL 0.2.6)
swedishchef.handler>
我可以看到我从 leiningen wrt 收到了两条不同的消息。 nREPL,取决于我如何开始:
[sugarcube->swedishchef]lein ring server
See https://github.com/technomancy/leiningen/wiki/Repeatability)
Started nREPL server on port 44231
这是使用 cider-nrepl 连接的输出:
[sugarcube->swedishchef]lein repl
See https://github.com/technomancy/leiningen/wiki/Repeatability)
nREPL server started on port 38024 on host 127.0.0.1 - nrepl://127.0.0.1:38024
REPL-y 0.3.5, nREPL 0.2.6
查看 lein deps :tree
的输出,我没有发现任何问题。所以,我的第一个问题是这是否应该起作用,即,如果 cider-nrepl
应该覆盖 lein ring
的行为 wrt。到 nrepl 启动?如果是这样,有人可以提供一些进一步故障排除的建议吗?
使用最新的 lein-ring
插件版本 0.9.2 并将包含 nrepl-middlewares 向量的 :nrepl-middleware
添加到 project.clj
中的 :repl-options
例如,我通过lein new compojure-app my-app
创建项目。然后,我通过在 ~/.lein/profiles.clj
ex 中创建一个空的 leiningen 配置文件来测试它。 {:yolo {}}
并通过 lein with-profile yolo,dev ring server
启动环形服务器。
(defproject my-app "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:dependencies [[org.clojure/clojure "1.6.0"]
[compojure "1.1.6"]
[hiccup "1.0.5"]
[ring-server "0.3.1"]
[cider/cider-nrepl "0.8.2"]]
:plugins [[lein-ring "0.9.2"]]
:ring {:handler my-app.handler/app
:init my-app.handler/init
:destroy my-app.handler/destroy
:nrepl {:start? true}}
:repl-options {:nrepl-middleware
[cider.nrepl.middleware.apropos/wrap-apropos
cider.nrepl.middleware.classpath/wrap-classpath
cider.nrepl.middleware.complete/wrap-complete
cider.nrepl.middleware.info/wrap-info
cider.nrepl.middleware.inspect/wrap-inspect
cider.nrepl.middleware.macroexpand/wrap-macroexpand
cider.nrepl.middleware.ns/wrap-ns
cider.nrepl.middleware.resource/wrap-resource
cider.nrepl.middleware.stacktrace/wrap-stacktrace
cider.nrepl.middleware.test/wrap-test
cider.nrepl.middleware.trace/wrap-trace
cider.nrepl.middleware.undef/wrap-undef]}
:profiles
{:uberjar {:aot :all}
:production
{:ring
{:open-browser? false, :stacktraces? false, :auto-reload? false}}
:dev
{:dependencies [[ring-mock "0.1.5"] [ring/ring-devel "1.3.1"]]}})
当我使用 lein ring server
启动当前项目并尝试通过苹果酒从 Emacs 连接到它时,我收到以下警告:
; CIDER 0.8.2 (Java 1.7.0_51, Clojure 1.6.0, nREPL 0.2.6)
WARNING: The following required nREPL ops are not supported:
apropos classpath complete eldoc info inspect-start inspect-refresh inspect-pop inspect-push inspect-reset macroexpand ns-list ns-vars resource stacktrace toggle-trace-var toggle-trace-ns undef
Please, install (or update) cider-nrepl 0.8.2 and restart CIDER
user>
但是,我的 project.clj
中确实有 [cider/cider-nrepl "0.8.2"]
的依赖项。当我 运行 lein repl
并且我可以从苹果酒连接到它时,这工作得很好:
; CIDER 0.8.2 (Java 1.7.0_51, Clojure 1.6.0, nREPL 0.2.6)
swedishchef.handler>
我可以看到我从 leiningen wrt 收到了两条不同的消息。 nREPL,取决于我如何开始:
[sugarcube->swedishchef]lein ring server
See https://github.com/technomancy/leiningen/wiki/Repeatability)
Started nREPL server on port 44231
这是使用 cider-nrepl 连接的输出:
[sugarcube->swedishchef]lein repl
See https://github.com/technomancy/leiningen/wiki/Repeatability)
nREPL server started on port 38024 on host 127.0.0.1 - nrepl://127.0.0.1:38024
REPL-y 0.3.5, nREPL 0.2.6
查看 lein deps :tree
的输出,我没有发现任何问题。所以,我的第一个问题是这是否应该起作用,即,如果 cider-nrepl
应该覆盖 lein ring
的行为 wrt。到 nrepl 启动?如果是这样,有人可以提供一些进一步故障排除的建议吗?
使用最新的 lein-ring
插件版本 0.9.2 并将包含 nrepl-middlewares 向量的 :nrepl-middleware
添加到 project.clj
:repl-options
例如,我通过lein new compojure-app my-app
创建项目。然后,我通过在 ~/.lein/profiles.clj
ex 中创建一个空的 leiningen 配置文件来测试它。 {:yolo {}}
并通过 lein with-profile yolo,dev ring server
启动环形服务器。
(defproject my-app "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:dependencies [[org.clojure/clojure "1.6.0"]
[compojure "1.1.6"]
[hiccup "1.0.5"]
[ring-server "0.3.1"]
[cider/cider-nrepl "0.8.2"]]
:plugins [[lein-ring "0.9.2"]]
:ring {:handler my-app.handler/app
:init my-app.handler/init
:destroy my-app.handler/destroy
:nrepl {:start? true}}
:repl-options {:nrepl-middleware
[cider.nrepl.middleware.apropos/wrap-apropos
cider.nrepl.middleware.classpath/wrap-classpath
cider.nrepl.middleware.complete/wrap-complete
cider.nrepl.middleware.info/wrap-info
cider.nrepl.middleware.inspect/wrap-inspect
cider.nrepl.middleware.macroexpand/wrap-macroexpand
cider.nrepl.middleware.ns/wrap-ns
cider.nrepl.middleware.resource/wrap-resource
cider.nrepl.middleware.stacktrace/wrap-stacktrace
cider.nrepl.middleware.test/wrap-test
cider.nrepl.middleware.trace/wrap-trace
cider.nrepl.middleware.undef/wrap-undef]}
:profiles
{:uberjar {:aot :all}
:production
{:ring
{:open-browser? false, :stacktraces? false, :auto-reload? false}}
:dev
{:dependencies [[ring-mock "0.1.5"] [ring/ring-devel "1.3.1"]]}})