在开发基于compojure/ring的应用程序时,使用emacs/cider的正确方法是什么?
开发过程中使用emacs/cider的正确工作流程/途径是什么 基于compojure/ring的clojure应用程序 我觉得我可以“附加”到我正在运行的compojure/ring流程, 更改代码,读取/更改数据,但我不明白如何正确操作? 正确的方法是什么 我做什么在开发基于compojure/ring的应用程序时,使用emacs/cider的正确方法是什么?,emacs,clojure,leiningen,ring,compojure,Emacs,Clojure,Leiningen,Ring,Compojure,开发过程中使用emacs/cider的正确工作流程/途径是什么 基于compojure/ring的clojure应用程序 我觉得我可以“附加”到我正在运行的compojure/ring流程, 更改代码,读取/更改数据,但我不明白如何正确操作? 正确的方法是什么 我做什么 lein new compojure my-project cd my-project lein ring server-headless 开发服务器现在运行。如果我更改项目中的文件,它们将自动重新加载。那很好。但我想要的是
lein new compojure my-project
cd my-project
lein ring server-headless
开发服务器现在运行。如果我更改项目中的文件,它们将自动重新加载。那很好。但我想要的是
例如,指向流程并更改其功能
我知道这是可能的,但我不知道怎么做。我不知道正确与否,但我会投入2美分 我使用immutant启动我的ring项目,immutant在指定端口启动REPL。我用
M-x苹果酒启动苹果酒
并连接到先前指定的端口。从那里我可以修改REPL中的内容
我也见过其他人从REPL内部启动jetty,尽管我从未尝试过。派对有点晚。但正如我刚刚处理同样的问题,并发现了这个悬而未决的问题。答案可在以下网址找到:
基本上,使用lein ring的插件版本0.9.2并添加到project.clj:nrepl{:start?true}上的:ring配置中,它可以工作有两种主要的方法来实现您想要的功能。它们都不是特定于环形服务器的,甚至不是特定于Web服务器的,它们将应用于任何Clojure项目 下面两种方法都应该为您提供一个功能完整的REPL,可以完全控制重新定义正在运行的服务器中的功能,以及完整的CIDER功能(例如能够调试服务器的web请求) 与苹果酒一样,您可以使用
C-C-k
重新加载更改的文件,这将重新定义您更改的任何函数。还有更多的微调评估
M-x苹果酒插孔(或C-C M-j) 这将启动项目的流程,并将REPL连接到项目。这不会为您调用任何函数(CIDER不会这样做),但是您可以通过调用REPL中的相应函数轻松启动Web服务器。如果所讨论的函数是
-main
函数,则可以执行M-x cider run
来调用它(如果愿意,可以将其绑定到键)
M-x苹果酒接头
同样,您可以像平常一样从终端启动Web服务器,然后调用
M-x cider connect
在其中打开一个REPL。(这是我以前做的)。更具体一点:当您在Emacs中打开连接到正在运行的headless jetty/ring应用程序的REPL,并且您评估一个函数或重新评估整个缓冲区或加载一个文件时,这些评估将在正在运行的应用程序中直接可见。这个答案很有帮助,对于苹果酒连接,请确保使用nrepl选项运行。对于环,您需要此:nrepl{:start?true:port 9000}