当从Emacs Cider REPL中通过reload-wrap启动Ring服务器时,REPL阻塞。我该怎么做才能在开发过程中拥有这个代码重载功能,同时又能继续使用Cider REPL。
另外,在通过按C-C - C-c从REPL中取消正在运行的服务器“进程”后,我无法在相同的端口上重新启动它,我得到了“地址已在使用”错误。
我知道斯图尔特·塞拉的组件系统是可以做到的。这是唯一的方法,还是有一个更简单的解决方案?
发布于 2016-03-29 19:58:08
当您启动环服务器(我猜是使用jetty)时,您并没有告诉它不要将当前线程加入到正在运行的服务器中。您需要向false添加join?选项集
(run-jetty my-handler {:join? false})您还应该绑定此表达式的返回值,它是服务器实例,以便您可以稍后停止它:
(def my-server (run-jetty my-handler {:join? false}))
;; some time later
(.stop my-server)停止服务器将关闭服务器套接字,并使其可供将来的服务器实例使用。
发布于 2016-04-14 05:46:01
更简单的解决方案是,将web-server存储在dev/user.clj中的某个位置,就像组件一样。并配置cider-refresh-fn变量来启动和停止web服务器。实际上,idea和组件方法是一样的,但是你不需要使用它,
https://stackoverflow.com/questions/36283251
复制相似问题