¿Cómo automatizar el inicio de Jetty/Appengine-Magic y Swank?
-
24-10-2019 - |
Pregunta
Con mi proyecto Clojure/Appengine-Magic, actualmente comienzo cosas así:
lein repl
(doto 'tlog.core require in-ns)
(compile 'tlog.core)
(ae/start tlog-app)
(require 'swank.swank) (swank.swank/start-repl 4005)
tlog.core tiene:
(:require [appengine-magic.core :as ae])
Alternativamente, en lugar de AE/Start, podría usar, creo:
(use 'ring.adapter.jetty)
(run-jetty (var tlog.core/tlog-app-handler) {:port 8080})
Me gustaría dejar todo esto detrás de un solo comando.
Todos los intentos de manejar esto a través de un -main
usado con lein run
o escribir un complemento de Leiningen falló debido a problemas de espacio de nombres/ruta.
Entonces, ¿cómo se puede hacer?
Solución
Gracias a un ejemplo dado por alguien que prefería no responder aquí, ahora tengo una solución bastante buena.
Adición a mi proyecto.clj:
:repl-init-script "src/tlog/init_repl.clj"
Se activará en ejecutar lein repl
.
init-repl.clj:
(ns user
"Init script for Leiningen REPL."
(:require [appengine-magic.core :as ae])
(:use [clojure.stacktrace]
[clojure.contrib.repl-utils :only (show)]
[tlog.core]))
(defn reload!
"Force a reload of everything."
[]
(require 'tlog.core :reload-all))
(compile 'tlog.core)
(ae/serve tlog-app)
(println "Interactive Jetty instance started. To force a reload: (reload!)")
(require 'swank.swank) (swank.swank/start-repl 4005)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow