Ring / Jetty中的自动代码重新加载

时间:2013-02-20 02:49:49

标签: layout asynchronous clojure jetty ring

将Ring / Jetty与Clojure结合使用,当我对代码进行任何更改时,我必须重新加载整个JVM。

有没有让Jetty与我的代码中的更改保持异步,所以我可以简单地刷新浏览器窗口并立即进行更改?

具体来说,我正在使用Hiccup进行HTML解析,而这主要是我正在制作的布局的变化。

如果布局更改自动编译并在刷新时在浏览器中可用,那将大大节省时间。

有没有人有任何相关信息?有没有解决方案?

3 个答案:

答案 0 :(得分:8)

您可能需要专门查看lein-ring :auto-reload?:auto-refresh?选项。

答案 1 :(得分:7)

作为环中自动重新加载功能的替代方案,如果你使用的是启用了repl的开发系统,比如emacs + nrepl或者逆时针(如果你没有,你应该尝试一下,看看它有什么区别) ),您可以直接从编辑器重新评估特定的定义或文件到正在运行的系统。 IMO它比保存+(自动)重载更优越的工作流程。我使用emacs / nrepl.el,我从来没有使用过自动重新加载。

答案 2 :(得分:1)

为什么不使用lein-ring

这是一个示例project.clj:

(defproject tutorial1 "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :license {:name "Eclipse Public License"
             :url "http://www.eclipse.org/legal/epl-v10.html"}
  :repl-options {:port 11111}
  :plugins [[lein-ring "0.8.8"]]
  :ring {:handler tutorial1.core/handler
          :auto-reload? true
          :auto-refresh? true
          }
    :dependencies [[org.clojure/clojure "1.5.1"]
                  [ring/ring-core "1.2.1"]
                    [ring/ring-jetty-adapter "1.2.1"]
                    [ring-refresh "0.1.1"]])