Fork me on GitHub

Total beginner question: In an example project I am testing I lose the REPL after having evaluated (run-jetty …). The server seems to work fine, but no more REPL for me. Anyone have a hint for me what I should check to see why it locks up like this?


Doesn't that block? If you're evaling from the repl, then the run-jetty will block the REPL thread


the normal thing to do is to (def server (run-jetty....)


to store the server instance in a var which you can then close later


Thanks! It was the :join? option I had missed. I took inspiration from the example @dharrigan provided and now have this:

(def ^:private server-ref (atom nil))

(defn start! []
  (if-let [server @server-ref]
    (log/warn "Server already running? (stop!) it first.")
      (reset! server-ref
              (run-jetty api/app
                         {:port (Integer/valueOf
                                 (or (System/getenv "port")
                          :join? false})))))

(defn stop! []
  (if-let [server @server-ref]
    (do (api/destroy)
        (.stop server)
        (reset! server-ref nil))
    (log/warn "No server")))

(defn -main [& _args]
Please let me know if it looks crazy to you. 😃