Skip to content

Instantly share code, notes, and snippets.

@visibletrap
Last active April 7, 2016 01:08
Show Gist options
  • Save visibletrap/3e3ad43c9145f23095c1ed10bcb4c590 to your computer and use it in GitHub Desktop.
Save visibletrap/3e3ad43c9145f23095c1ed10bcb4c590 to your computer and use it in GitHub Desktop.
How to start/stop Jetty Ring server with REPL
(ns .handler
(:require [compojure.api.sweet :refer [GET defapi context]]
[ring.util.http-response :refer [ok]]
[compojure.api.swagger :refer [swagger-routes]]))
(defapi app
(swagger-routes)
(GET "/events" []
:query-params [name :- String]
(ok {:message (str "Hello, " name)})))
(ns yogurt.main
(:require [yogurt.server :as server]
[yogurt.handler :refer [app]]))
(defn stop-server []
(server/stop))
(defn start-server []
(stop-server)
(server/start app))
(defn -main [] ; For running in command line with `lein run`
(start-server))
(ns yogurt.server
(:require [ring.adapter.jetty :as jetty] ; Requires ring-jetty-adapter as dependency https://github.com/ring-clojure/ring/tree/master/ring-jetty-adapter
[clojure.tools.logging :as log]))
(def _server (atom nil))
(defn start
([app] (start app {}))
([app options]
(let [{:keys [port] :or {port 3000}} options
server (jetty/run-jetty app {:port port :join? false})] ; Options are described here https://github.com/ring-clojure/ring/blob/4a3584570ad9e7b17f6b1c8a2a17934c1682f77d/ring-jetty-adapter/src/ring/adapter/jetty.clj#L104-L129
(reset! _server server)
(log/info "Starting server at port" port)
server)))
(defn stop []
(.stop @_server)
(reset! _server nil))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment