Add an example project with integrant

This commit is contained in:
Daw-Ran Liou 2019-10-10 12:51:08 -07:00 committed by Tommi Reiman
parent bd5c67e75c
commit c3e6682151
4 changed files with 71 additions and 0 deletions

11
examples/ring-integrant/.gitignore vendored Normal file
View file

@ -0,0 +1,11 @@
/target
/classes
/checkouts
pom.xml
pom.xml.asc
*.jar
*.class
/.lein-*
/.nrepl-port
.hgignore
.hg/

View file

@ -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

View file

@ -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})

View file

@ -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))