J'écris une application web en utilisant ring et clojure. J'utilise l'adaptateur jetty pour le serveur de développement et emacs / SLIME pour l'IDE. Bien que wrap-reload aide, run-jetty bloque ma session de slime et j'aimerais pouvoir le démarrer / l’arrêter à volonté sans avoir à le lancer dans une session de terminal séparée. Idéalement, j'aimerais définir un agent de serveur et des fonctions start-server et stop-server permettant de démarrer / arrêter le serveur à l'intérieur de l'agent. Est-ce possible?
Réponse
Trop de publicités?J'ai généralement une ligne dans mon application Ring qui ressemble à ceci:
(defonce server (run-jetty #'my-app {:port 8080 :join? false}))
Cela évite de bloquer le REPL. Cela me permet également de recompiler ce fichier sans craindre que mon serveur ne soit redéfini. Cela vous permet également d’interagir sur le REPL comme ceci:
user=> (.stop server)
et
user=> (.start server)