Как автоматизировать запуск причала /appengine-magic и swank?
С моим проектом Clojure/appengine-magic я сейчас запускаю такие вещи:
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 имеет:
(:require [appengine-magic.core :as ae])
В качестве альтернативы, вместо ae/start, я мог бы использовать, я думаю:
(use 'ring.adapter.jetty)
(run-jetty (var tlog.core/tlog-app-handler) {:port 8080})
Я хотел бы поместить все это в одну команду.
Все попытки справиться с этим через -main
используется с lein run
или запись плагина leiningen не удалась из-за проблем с пространством имен / путями.
Так как это можно сделать?
1 ответ
Решение
Благодаря примеру, приведенному кем-то, кто предпочел не отвечать здесь, у меня теперь есть довольно хорошее решение.
Дополнение к моему project.clj:
:repl-init-script "src/tlog/init_repl.clj"
Будет запущен при запуске 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)