在开发基于组件/环的应用程序时使用emacs / cider的正确方法是什么?

时间:2014-06-13 18:32:33

标签: emacs clojure leiningen ring compojure

开发时使用emacs / cider的正确工作流程/途径是什么 一个基于compojure / ring的clojure应用程序?

我觉得我可以“附加”到我正在运行的compojure / ring-process, 更改其代码,读取/更改其数据,但我无法理解我该怎么做? 什么是正确的方法?

我做什么?

lein new compojure my-project
cd my-project
lein ring server-headless

开发服务器现在运行。如果我更改项目中的文件,它们将自动重新加载。那很好。但我想拥有的是我附上的 例如,指向流程并更改其功能。

我明白这是可能的,但我无法理解。

3 个答案:

答案 0 :(得分:2)

我不知道正确但我会投入2美分。

我使用immutant启动我的ring项目,它在指定的端口启动REPL。我用M-x cider启动苹果酒并连接到之前指定的端口。从那里我可以修改REPL中的内容。

我还看到其他人从REPL内部开始码头,虽然我从未尝试过这个。

答案 1 :(得分:1)

有两种主要方式可以做你想做的事。它们都不是特定于环服务器,甚至不是网络服务器,它们都适用于任何Clojure项目。

下面的两种方法都应该为您提供一个功能齐全的REPL,可以完全控制您正在运行的服务器中的功能,以及完整的CIDER功能(比如能够调试对服务器的Web请求)。

与CIDER一样,您可以使用C-c C-k重新加载已更改的文件,这将重新定义您已更改的任何功能。还有plenty of other keys用于更精细的评估。

M-x苹果酒 - 千斤顶(或C-c M-j)

作为documented on the manual,这将启动项目的过程并将REPL连接到它。这不会为您调用任何函数(CIDER不会这样做),但您可以通过调用REPL中的相应函数轻松启动您的Web服务器。如果有问题的函数是-main函数,您可以M-x cider-run进行调用(如果您愿意,可以将其绑定到键)。

M-x苹果酒连接

同样作为documented on the manual,您可以像往常一样从终端启动您的网络服务器,然后调用M-x cider-connect打开其中的REPL。 (这是我以前做过的一段时间)。

答案 2 :(得分:0)

派对有点晚了。但正如我刚刚处理同样的问题并发现这个未解决的问题。答案可以在以下位置找到: lein ring server with nrepl doesn't honour cider-nrepl

基本上,使用lein-ring的插件版本0.9.2并添加到project.clj上的:ring配置:nrepl {:start?是的,它的工作原理