のブートは、(a)すべてのソースファイルがカレントディレクトリにあり、(b)ソースファイルが変更されるたびにユニットテストが実行され、 (c)REPLは、それを含むソースファイルが変更されたときに定義をリフレッシュしますか?具体的にClojure/bootの簡単なワークフロー設定を求める
:
build.boot
に行きますか?REPLを起動するシェルコマンドとは何ですか?そして/またはREPLのどのコマンドが単体テストの監視を開始するのですか?
その他の従来の設定は何ですか?
私はboot、boot-test、boot-quick-test、REPL reloading in boot、およびboot-refresh上の文書の多くを読みましたが、私は仕事に多くを取得することができていません。私が今までに見つけたドキュメントは、ちょっとしたヒントを提供するようですが、これらのことをまとめるために必要なものはありません。
適切なbuild.boot
(およびその他のもの)の簡単な例が特に役に立ちます。
これまでのところ、これが私の作品です。
(set-env!
:dependencies '[
[adzerk/boot-test "1.1.2" :scope "test"]
[org.clojure/tools.namespace "0.2.11"]]
:source-paths #{"."})
(require '[clojure.tools.namespace.repl :as repl :refer [refresh]])
(apply repl/set-refresh-dirs (get-env :directories))
プラス現在のディレクトリ内のファイル、sample.clj
:
(ns sample
(:require [clojure.test :refer :all]))
(defn myfunc [] "this string")
(deftest test-myfunc
(is (= "this string" (myfunc))))
これは、現在のディレクトリ内のソースファイルを見つけることがブートを取得し、それは私が手動で入力することにより、sample.clj
に変更を再ロードすることができますREPLの(refresh)
。 (boot (test))
は、.clj
ファイルのユニットテストを手動で実行するために使用されていますが、「失敗した数のargs(0)が渡されました:core/test」というエラーが表示されました。
これは正しい方法はありますか?
ありがとうございます!私は再び生産的になり始めています。私は2つのREPLプロセスを始めるトリックについては知らなかった。それでもなお、ソースファイルに新しい 'defn'を追加すると、' repl -s'プロセスはそれを再ロードしますが、 'repl -c'プロセスはそれを見ません。つまり、REPLクライアントのコマンドラインで新しい関数を呼び出そうとすると、「Unable to resolve symbol」と表示されます。しかし、既に存在する関数の定義への変更は、 'repl -c'プロセスに現れます。助言がありますか? –
私は、 ':refer'や':as'が 'require 'と内部的にどのように働くのかという問題があると思います。私は同じ問題を抱えていますが、完全なnsで新しいシンボルを呼び出すことは私のために働きます。 –
完全なnsを持つ新しいシンボルを呼び出すコマンドは何ですか? (私は "新しいシンボルを呼び出す"ことが何であるか分かりません) –