various cleanups to the ring-handler, leiningen things, etc

This commit is contained in:
Gered 2014-04-05 12:37:10 -04:00
parent 295ea2e61a
commit c557f281f4
5 changed files with 45 additions and 32 deletions

View file

@ -1,5 +1,5 @@
(ns user
(:use [blarg.repl]))
(:use main))
(start-server)

View file

@ -17,10 +17,10 @@
[org.clojure/math.numeric-tower "0.0.4"]
[clj-rss "0.1.3"]
[clj-metasearch "0.1.1"]]
:repl-options {:init-ns blarg.repl}
:main main
:plugins [[lein-ring "0.8.10"]
[lein-environ "0.4.0"]]
:ring {:handler blarg.handler/app
:ring {:handler blarg.handler/handle-app
:init blarg.handler/init
:destroy blarg.handler/destroy}
:profiles
@ -29,8 +29,8 @@
:stacktraces? false
:auto-reload? false}
:resource-paths ["env-resources/prod"]}
:repl {:source-paths ["dev"]}
:dev {:dependencies [[ring-mock "0.1.5"]
[ring/ring-devel "1.2.1"]]
:source-paths ["dev"]
:resource-paths ["env-resources/dev"]}}
:min-lein-version "2.0.0")

View file

@ -8,6 +8,7 @@
[clj-jtwig.core :as jtwig]
[clj-jtwig.web.middleware :refer [wrap-servlet-context-path]]
[blarg.config :refer [config-val]]
[blarg.middleware :refer [wrap-exceptions]]
[blarg.views.layout :as layout]
[blarg.models.db :as db]
[blarg.routes.accessrules :refer [auth-required]]
@ -18,39 +19,31 @@
(route/resources "/")
(layout/render-handler "notfound.html" :status 404))
(defonce ring-app (atom nil))
(defn handle-app [request]
(@ring-app request))
(defn init []
(set-config! [:shared-appender-config :spit-filename] "blarg.log")
(set-config! [:appenders :spit :enabled?] true)
(set-config! [:fmt-output-fn] log-formatter)
(log :info "blarg started successfully")
(log :info "Starting up ...")
(reset! ring-app
(app-handler
(find-routes "blarg.routes." app-routes)
:middleware [wrap-exceptions wrap-servlet-context-path]
:access-rules [{:redirect "/unauthorized" :rule auth-required}]
:formats [:json-kw :edn]))
(when (= "DEV" (config-val :env))
(log :info "Dev environment. Template caching disabled.")
(jtwig/toggle-compiled-template-caching! false))
(log :info "touching database...")
(log :info "Touching database...")
(db/touch-databases))
(defn destroy []
(log :info "blarg is shutting down..."))
(defn wrap-exceptions [handler]
(fn [request]
(try
(handler request)
(catch Throwable e
(log :error e "Unhandled exception.")
(layout/render-response
request
"error.html"
:params {:errorInfo e}
:status 500)))))
(def routes (find-routes "blarg.routes." app-routes))
(def app (app-handler
routes
:middleware [wrap-exceptions wrap-servlet-context-path]
:access-rules [{:redirect "/unauthorized" :rule auth-required}]
:formats [:json-kw :edn]))
(log :info "Shutting down ..."))

15
src/blarg/middleware.clj Normal file
View file

@ -0,0 +1,15 @@
(ns blarg.middleware
(:require [taoensso.timbre :refer [log]]
[blarg.views.layout :as layout]))
(defn wrap-exceptions [handler]
(fn [request]
(try
(handler request)
(catch Throwable e
(log :error e "Unhandled exception.")
(layout/render-response
request
"error.html"
:params {:errorInfo e}
:status 500)))))

View file

@ -1,12 +1,14 @@
(ns blarg.repl
(:use blarg.handler
ring.server.standalone
[ring.middleware file-info file]))
(ns main
(:require [ring.middleware.file :refer [wrap-file]]
[ring.middleware.file-info :refer [wrap-file-info]]
[ring.server.standalone :refer [serve]]
[blarg.handler :refer [handle-app init destroy]])
(:gen-class))
(defonce server (atom nil))
(defn get-handler []
(-> #'app
(-> #'handle-app
(wrap-file "resources")
(wrap-file-info)))
@ -24,3 +26,6 @@
(defn stop-server []
(.stop @server)
(reset! server nil))
(defn -main [& args]
(start-server))