我正在 Clojure 和 Vaadin 中开发一个 web 应用程序,但我无法让应用程序自动重新部署,所以我只需在浏览器上按刷新。有任何想法吗?
问问题
417 次
1 回答
2
理想情况下,您使用的 REPL 服务器允许您随意将新的 Clojure 代码加载到您的应用程序中。在这种情况下,只需将工作流程更改为:
- 通知问题
- 转到 Clojure 编辑器
- 将新代码加载到正在运行的应用程序中
- 转到浏览器,点击刷新。
如果您使用 Maven,您可以使用 maven-jetty-plugin 在您更改其源文件时自动重新加载您的 web 应用程序。有关更多信息,请参阅此帖子。
另一种选择是不断尝试重新加载您的 Clojure 代码。像这样的东西,也许:
(defn reload
([] (reload #"."))
([ns-pattern]
(doseq [ns (all-ns)
:let [ns (.name ns)]
:when (re-seq ns-pattern (str ns))]
(require ns :reload))))
在启动 webapp 的任何代码中,或在主 servlet init 等中,添加如下内容:
(future (loop []
(Thread/sleep 5000)
(reload) ;; optionally specify a regex to match only your app's namespaces here
(recur)))
绝对不是您想在生产中使用的东西。我更喜欢在每种情况下都使用适当的远程 REPL,但以上内容可以帮助您解决问题。
于 2010-10-01T11:50:12.280 回答