Clojure Web アプリケーションを自動的に再デプロイするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/3837547

  •  27-09-2019
  •  | 
  •  

質問

Clojure と Vaadin で Web アプリケーションを開発していますが、アプリケーションを自動再デプロイすることができないため、ブラウザーで更新を押すだけです。何か案は?

役に立ちましたか?

解決

理想的には、新しい Clojure コードをアプリケーションに自由にロードできる REPL サーバーを使用することです。その場合は、ワークフローを次のように変更するだけです。

  1. 問題に気づく
  2. Clojureエディターに移動します
  3. 実行中のアプリケーションに新しいコードをロードする
  4. ブラウザに移動し、更新を押します。

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 を使用することを好みますが、上記の方法で十分です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top