Как настроить загрузку так, чтобы: (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
, набрав (refresh)
в REPL. (boot (test))
используется для ручного запуска модульных тестов в файле .clj
, но он провалился, когда я попробовал его только сейчас, с ошибкой «Неверное количество аргументов (0), переданных в: core/test».
Каков правильный способ сделать это?
Спасибо! Я снова начинаю работать. Я не знал о том, как запустить два процесса REPL. Еще одна ошибка: когда я добавляю новый 'defn' в исходный файл, процесс' repl -s' перезагружает его, но процесс 'repl -c' не видит его. То есть, если я попытаюсь вызвать новую функцию в командной строке клиента REPL, она даст мне «Невозможно разрешить символ». Однако изменения в определении уже существующей функции отображаются в процессе 'repl -c'. Какие-либо предложения? –
Я думаю, что это может быть проблема с тем, как 'require' с': refer' и/или ': as' работают внутри. Я получаю те же проблемы, но при вызове новых символов с полным ns работает для меня. –
Какая команда вызывает новые символы с полным ns? (Я не уверен, что означает «называть новые символы».) –