2

質問

load-file を 2 つのステップに分割することは可能ですか?

(1) compile and
(2) load ?

環境

リモートマシンへのホットコードリロードを行っています。ソースをマシンに送りたくないので、マシンにロード ファイルを渡します。代わりに、*.class ファイルをマシンに送信し、マシンに *.class を使用して名前空間をリロードさせたいと考えています。

したがって、次の方法が必要です。

(1) transform *.clj files to *.class files that can be hot-reloaded

(2) I need to be able to call remove-ns on them later (when they have to be replaced)

編集

また、 (require :reload ... ) を使用しても完全に満足しています。これも、*.clj ファイルの代わりに *.class ファイルを提供できる限りです。

ありがとう!

4

1 に答える 1

0

簡潔な答え:

  1. ローカル マシンでcompileを使用して、clojure ソースを .class ファイルにコンパイルします。
  2. それらをリモートサーバーにアップロードします。
  3. 名前空間を (再) ロードするには、requireを使用します。

ソース コードでは、特にこの理由から、require代わりに またはに依存する必要があります。load-file実行時に、名前空間がコンパイル済みのバイナリであるソース ファイルから取得されるかどうかはわかりません。

于 2012-06-12T16:29:35.783 に答える