2013-02-20 65 views
5

在Clojure中使用Ring/Jetty,当我对代码进行任何更改时,必须重新加载我的整个JVM。Ring/Jetty中的自动代码重装

反正是有保持异步码头,在我的代码更改的,所以我可以简单地刷新浏览器窗口,并立即得到改变?

具体来说,我使用打嗝的HTML解析,这是我在做,主要的变化布局。

如果在刷新时自动编译布局更改并在浏览器中可用,那将是一个巨大的时间片。

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

回答

7

作为环中自动重载功能的替代方案,如果您使用的是支持repl的开发系统,如emacs + nrepl或逆时针(如果您不这样做,您应该尝试一个以查看它的差异使您可以直接从编辑器重新评估特定的定义或文件到正在运行的系统中。海事组织这是一个比保存+(自动)重新加载更优越的工作流程。我使用emacs/nrepl.el,我从来没有任何用于自动重新加载。

+4

+1 - 只是一定写下你的处理程序不缓存你黑客攻击的FN的值的方式,你可以从REPL启动嵌入式Jetty并在重新评估时立即看到您的更改,而无需重新启动服务器。第一次感觉就像魔术一样。 :) – Alex 2013-02-20 15:07:16

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"]])