Clojure: перезагрузка браузера в Linux
Есть ли что-то вроде Rack-LiveReload, которое можно использовать вместе с таким инструментом, как Guard-LiveReload для разработки Clojure? Я действительно не могу обойтись без перезагрузки в прямом эфире теперь, когда я использовал его. Если нет ничего более удобного, я мог бы загрузить файл LiveReload JS и вручную включить его в свое приложение и использовать его с Guard-LiveReload, но я бы предпочел его, если бы существовало полное решение Clojure. Я не могу установить приложение LiveReload на свою машину, потому что я использую Linux, поэтому мне нужно что-то вроде Guard-LiveReload.
Я новичок в Clojure, но пока я собираюсь пойти с Ring и Compojure, что, возможно, может иметь значение.
3 ответа
ОК, это можно сделать очень легко, но с Grunt и https://github.com/gruntjs/grunt-contrib-watch (который имеет встроенную поддержку LiveReload), Grunt будет работать с любым языком.
Я копался в библиотеке c2 и обнаружил, что автор создал сервер liverelaod в Clojure.
https://github.com/lynaghk/c2/tree/master/vrepl
У него также есть скринкаст на своем сайте. http://keminglabs.com/c2/
Grunt, вероятно, будет работать для вас, но так как вы спросили о реализации Clojure, я подумал, что упомяну об этом.
Imho лучший идиоматичный способ пойти в вашем случае может быть переход с адаптера Ring Jetty на http-kit, который обеспечивает горячую перезагрузку кода из коробки. Он также поддерживает Websockets и имеет заметную производительность
Конечно, он совместим с Ring & Compojure: HTTP Kit - это минималистский, эффективный, совместимый с Ring HTTP-клиент / сервер для Clojure. Он использует архитектуру, управляемую событиями, для поддержки одновременных / синхронных веб-приложений. Используйте унифицированный API для длинных запросов / потоковой передачи по протоколу WebSocket и HTTP.