Как я могу получить приложение Clojure для автоматического повторного развертывания? - PullRequest
1 голос
/ 01 октября 2010

Я занимаюсь разработкой веб-приложения в Clojure и Vaadin, но не могу заставить приложение выполнить автоматическое развертывание, поэтому я просто нажимаю в браузере кнопку Обновить.Есть идеи?

1 Ответ

2 голосов
/ 01 октября 2010

В идеале вы используете сервер REPL, который позволит вам загружать новый код Clojure в ваше приложение по желанию. В этом случае вам нужно просто изменить рабочий процесс на:

  1. проблема с уведомлением
  2. перейти в редактор Clojure
  3. Загрузка нового кода в работающее приложение
  4. Зайдите в браузер, нажмите обновить.

Если вы используете Maven, вы можете использовать maven-jetty-plugin для автоматической перезагрузки вашего веб-приложения при изменении его исходных файлов. См. этот пост для получения дополнительной информации.

Еще один вариант - постоянно пытаться перезагрузить ваш код Clojure. Примерно так, возможно:

(defn reload
  ([] (reload #"."))
  ([ns-pattern]
    (doseq [ns (all-ns)
            :let [ns (.name ns)]
            :when (re-seq ns-pattern (str ns))]
      (require ns :reload))))

В любой имеющийся у вас код, который запускает ваше веб-приложение, или в основной инициализации сервлета и т. Д., Добавьте что-то вроде:

(future (loop []
          (Thread/sleep 5000)
          (reload) ;; optionally specify a regex to match only your app's namespaces here
          (recur)))

Определенно не то, что вы хотите использовать в производстве. Я бы предпочел использовать правильный удаленный REPL в каждом случае, но вышеперечисленное поможет вам.

...