diff --git a/examples/ring-integrant/.gitignore b/examples/ring-integrant/.gitignore new file mode 100644 index 00000000..c53038ec --- /dev/null +++ b/examples/ring-integrant/.gitignore @@ -0,0 +1,11 @@ +/target +/classes +/checkouts +pom.xml +pom.xml.asc +*.jar +*.class +/.lein-* +/.nrepl-port +.hgignore +.hg/ diff --git a/examples/ring-integrant/README.md b/examples/ring-integrant/README.md new file mode 100644 index 00000000..0c3327cb --- /dev/null +++ b/examples/ring-integrant/README.md @@ -0,0 +1,18 @@ +# Ring Reitit example + +A Sample project with ring and reitit. + +## Usage + +```clj +> lein repl +(start) +``` + +Go with browser to: + +* http://localhost:3000/ping + +## License + +Copyright © 2017-2018 Metosin Oy diff --git a/examples/ring-integrant/project.clj b/examples/ring-integrant/project.clj new file mode 100644 index 00000000..367b299a --- /dev/null +++ b/examples/ring-integrant/project.clj @@ -0,0 +1,7 @@ +(defproject ring-integrant-example "0.1.0-SNAPSHOT" + :description "Reitit Ring App with Swagger" + :dependencies [[org.clojure/clojure "1.10.1"] + [ring/ring-jetty-adapter "1.7.1"] + [metosin/reitit "0.3.10"] + [integrant "0.7.0"]] + :repl-options {:init-ns example.server}) diff --git a/examples/ring-integrant/src/example/server.clj b/examples/ring-integrant/src/example/server.clj new file mode 100644 index 00000000..5c9de4bb --- /dev/null +++ b/examples/ring-integrant/src/example/server.clj @@ -0,0 +1,35 @@ +(ns example.server + (:require + [reitit.ring :as ring] + [ring.adapter.jetty :as jetty] + [integrant.core :as ig])) + +(defonce server (atom nil)) + +(def system-config + {:example/jetty {:port 3000 + :join? false + :handler (ig/ref :example/handler)} + :example/handler {}}) + +(defmethod ig/init-key :example/jetty [_ {:keys [port join? handler]}] + (println "server running in port" port) + (jetty/run-jetty handler {:port port :join? join?})) + +(defmethod ig/halt-key! :example/jetty [_ server] + (.stop server)) + +(defmethod ig/init-key :example/handler [_ _] + (ring/ring-handler + (ring/router + ["/ping" {:get {:handler (fn [_] {:status 200 :body "pong!"})}}]))) + +(defn start [] + (reset! server (ig/init system-config))) + +(defn stop [] + (swap! server ig/halt!)) + +(comment + (start) + (stop))