1

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

4

1 に答える 1

2

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

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

Maven を使用している場合は、maven-jetty-plugin を使用して、ソース ファイルを変更したときに webapp を自動的にリロードできます。詳細については、この投稿を参照してください。

さらに別のオプションとして、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 アプリケーションを起動するコード、またはメインのサーブレット 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 に答える