Como posso fazer com que um WebApp de Clojure seja reimplementado automaticamente?

StackOverflow https://stackoverflow.com/questions/3837547

  •  27-09-2019
  •  | 
  •  

Pergunta

Estou desenvolvendo uma aplicação da web em Clojure e Vaadin, mas não consigo fazer o aplicativo para implantar automaticamente, para que apenas pressione a atualização no navegador. Alguma ideia?

Foi útil?

Solução

Idealmente, você está usando um servidor REPL que permitirá carregar um novo código de clojure em seu aplicativo à vontade. Nesse caso, é apenas uma questão de alterar seu fluxo de trabalho para:

  1. Observe o problema
  2. vá para o editor de clojure
  3. Carregar novo código para executar o aplicativo
  4. Vá para o navegador, pressione a atualização.

Se você estiver usando o MAVEN, pode usar o Maven-Jetty-Plugin para recarregar automaticamente seu WebApp ao alterar seus arquivos de origem. Ver esta postagem para mais informações.

Outra opção é tentar continuamente recarregar seu código de clojure. Algo assim, talvez:

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

Em qualquer código que você tenha que inicie seu WebApp, ou em seu principal servlet init, etc., adicione algo como:

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

Definitivamente não é algo que você deseja usar na produção. Eu prefiro usar um REPL remoto adequado em todos os casos, mas o acima o levará.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top