【问题标题】:Ring with reload-wrap in Emacs Cider REPL在 Emacs Cider REPL 中使用 reload-wrap 环
【发布时间】:2016-03-29 11:40:23
【问题描述】:

当通过 reload-wrap 从 Emacs Cider REPL 中启动 Ring 服务器时,REPL 会阻塞。我该怎么做才能在开发期间拥有此代码重新加载功能并能够同时继续使用 Cider REPL。

此外,通过点击 C-c C-C 从 REPL 中取消正在运行的服务器“进程”后,我无法在同一端口上重新启动它,我收到“地址已在使用”错误。

我知道这可以通过 Stuart Sierra 的组件系统实现。这是唯一的方法还是可能有更简单的解决方案?

【问题讨论】:

    标签: emacs clojure cider


    【解决方案1】:

    当你启动你的环服务器(我猜是使用码头)时,你并没有告诉它不要将当前线程加入正在运行的服务器。你需要添加join?选项设置为false

    (run-jetty my-handler {:join? false})
    

    您还应该绑定此表达式的返回值,即服务器实例,以便稍后停止它:

    (def my-server (run-jetty my-handler {:join? false}))
    ;; some time later
    (.stop my-server)
    

    停止服务器将关闭服务器套接字并使其可用于未来的服务器实例。

    【讨论】:

      【解决方案2】:

      更简单的解决方案,将 Web 服务器与组件一样存储在 dev/user.clj 中的某处。并配置cider-refresh-fn 变量来启动和停止web-server。 其实idea和组件方式是一样的,只是你不必使用它,

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-04-29
        • 1970-01-01
        • 1970-01-01
        • 2014-10-06
        • 1970-01-01
        • 1970-01-01
        • 2021-05-05
        • 1970-01-01
        相关资源
        最近更新 更多