开发时使用emacs / cider的正确工作流程/途径是什么 一个基于compojure / ring的clojure应用程序?
我觉得我可以“附加”到我正在运行的compojure / ring-process, 更改其代码,读取/更改其数据,但我无法理解我该怎么做? 什么是正确的方法?
我做什么?
lein new compojure my-project
cd my-project
lein ring server-headless
开发服务器现在运行。如果我更改项目中的文件,它们将自动重新加载。那很好。但我想拥有的是我附上的 例如,指向流程并更改其功能。
我明白这是可能的,但我无法理解。
答案 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用于更精细的评估。
作为documented on the manual,这将启动项目的过程并将REPL连接到它。这不会为您调用任何函数(CIDER不会这样做),但您可以通过调用REPL中的相应函数轻松启动您的Web服务器。如果有问题的函数是-main
函数,您可以M-x cider-run
进行调用(如果您愿意,可以将其绑定到键)。
同样作为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?是的,它的工作原理