Clojure Web アプリケーションを自動的に再デプロイするにはどうすればよいですか?
質問
Clojure と Vaadin で Web アプリケーションを開発していますが、アプリケーションを自動再デプロイすることができないため、ブラウザーで更新を押すだけです。何か案は?
解決
理想的には、新しい Clojure コードをアプリケーションに自由にロードできる REPL サーバーを使用することです。その場合は、ワークフローを次のように変更するだけです。
- 問題に気づく
- 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))))
Web アプリを起動するコード、またはメインのサーブレットの初期化などに、次のようなコードを追加します。
(future (loop []
(Thread/sleep 5000)
(reload) ;; optionally specify a regex to match only your app's namespaces here
(recur)))
間違いなく、本番環境で使用したいものではありません。あらゆる場合に適切なリモート REPL を使用することを好みますが、上記の方法で十分です。
所属していません StackOverflow