Как я могу получить Clojure WebApp для автоматического перераспределения?
Вопрос
Я разрабатываю webaplication в Clojure и Vaadin, но я не могу получить приложение к Autodoodploy, чтобы я просто нажимаю об обновлении на браузере. Есть идеи?
Решение
В идеале вы используете rep-сервер, который позволит вам загрузить новый код Clojure в ваше приложение по желанию. В этом случае это просто вопрос изменения вашего рабочего процесса в:
- Уведомление о проблемах
- Перейти к редактору Clojure
- Загрузите новый код в запущенное приложение
- Перейти к браузеру, нажмите Обновить.
Если вы используете 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))))
В каком-либо коде, который вы имеете, это запускает ваш WebApp, или в вашем главном сервлете и т. Д., Добавить что-то вроде:
(future (loop []
(Thread/sleep 5000)
(reload) ;; optionally specify a regex to match only your app's namespaces here
(recur)))
Определенно не то, что вы хотите использовать в производстве. Я бы предпочел использовать правильную дистанционную замену в каждом случае, но приведенное выше вы получите вас.