私は Clojure に不慣れで、Leiningen が私のコードを実行するのを待つことに人生の多くの時間を費やしてきたので、Cake に移行しようとしています。Cake の永続的な JVM は非常に高速にロードされますが、より大きな問題が発生します。私の関数も永続的です!
問題を実証するために、私は Cake プロジェクトを開始し (を使用してcake new mess-up-with-cake
)、これを に書きましたcore.clj
:
(ns mess-up-with-cake.core)
(defn main-function[]
(println "I'm in the main function")
)
(println "I'm in core.clj, not inside in any function")
これはproject.clj
次のとおりです。
(defproject mess-up-with-cake "0.0.1-SNAPSHOT"
:description "TODO: add summary of your project"
:dependencies [[clojure "1.2.0"]])
(use 'mess-up-with-cake.core)
(deftask my-task
(println "I'm in my task")
(main-function)
)
で実行するとcake my-task
、次のようになります。
I'm in core.clj, not inside in any function
I'm in my task
I'm in the main function
ここで驚きはありません。
今、私はこれに変更core.clj
しました:
(ns mess-up-with-cake.core)
(defn main-function[]
(println "I'm in the main function")
(println "I've made a change in the main function")
)
(println "I'm in core.clj, not inside in any function")
(println "I've made a change outside the main function")
そして、私がそれを実行すると、私は得る
I'm in core.clj, not inside in any function
I've made a change outside the main function
I'm in my task
I'm in the main function
core.clj
明らかにリロードされましたが、メイン関数内で行った変更は出力されませんでした! JVM を停止しcake kill
て再実行した場合にのみ、目的の結果が得られますが、関数を変更するたびに JVM を再起動する必要がある場合は、lein に戻ることもできます...
Cake に関数を強制的にリロードさせる方法はありますか?