Skip to content

Latest commit

 

History

History
79 lines (59 loc) · 2.3 KB

5-reorg.md

File metadata and controls

79 lines (59 loc) · 2.3 KB

Chapter 5: Reorganization

We need to clean up a little bit to make the code better.

Change the project.clj to be like this:

(defproject chatter "0.1.0-SNAPSHOT"  
  :description "Clojure web app for displaying messages"  
  :url "https://github.com/AustinClojure/workshop"
  :dependencies [[org.clojure/clojure "1.8.0"]
                 [compojure "1.5.1"]                 
                 [ring/ring-jetty-adapter "1.5.0"]                 
                 [ring/ring-defaults "0.2.1"]
                 [hickory "0.5.4"]                 
                 [environ "1.0.0"]]
  :plugins [[lein-ring "0.9.7"]            
            [lein-environ "1.0.0"]]
  :ring {:handler chatter.handler/app}
  :profiles {
             :dev {:dependencies [[javax.servlet/servlet-api "2.5"]                               
                                  [ring/ring-mock "0.3.0"]
                                  [kerodon "0.8.0"]]}

             :production {:ring {:open-browser? false
                                 :stacktraces? false
                                 :auto-reload? false}
                          :env {production true}}}
  :aot :all  
  :main chatter.main  
  :uberjar-name "chatter-standalone.jar")

Add a new file called main.clj in the src/chatter directory. Add this following:

(ns chatter.main  
 (:require [chatter.handler :as chatter]            
           [environ.core :as env]      
           [ring.adapter.jetty :as jetty]))

(defn -main []
 (let [jetty-opts {:port
                   (Integer. (or (env/env :port) "3000"))
                   :join? false}]
   (jetty/run-jetty #'chatter/app jetty-opts)))

If there is an env variable with the port value it uses that, otherwise it uses 3000.

Then change your Handler file to be like this:

(ns chatter.handler
  (:require [compojure.core :refer :all]
            [compojure.route :as route]
            [ring.middleware.params :as params]
            [ring.util.response :as response]))

Remove the app var and replace with this:

(def app (params/wrap-params app-routes))

We have now basically added all the libraries we will need and moved the server code to a new file.

Try it out with

lein ring server

Next lets start Chapter 6: Building our Index Page