diff --git a/dev/user.clj b/dev/user.clj index 0b3316e..ec5ebbb 100644 --- a/dev/user.clj +++ b/dev/user.clj @@ -1,5 +1,5 @@ (ns user - (:use [blarg.repl])) + (:use main)) (start-server) diff --git a/project.clj b/project.clj index 9f35812..48df8b9 100644 --- a/project.clj +++ b/project.clj @@ -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") diff --git a/src/blarg/handler.clj b/src/blarg/handler.clj index 9118d7a..eebd2fd 100644 --- a/src/blarg/handler.clj +++ b/src/blarg/handler.clj @@ -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 ...")) diff --git a/src/blarg/middleware.clj b/src/blarg/middleware.clj new file mode 100644 index 0000000..9ae186e --- /dev/null +++ b/src/blarg/middleware.clj @@ -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))))) \ No newline at end of file diff --git a/src/blarg/repl.clj b/src/main.clj similarity index 64% rename from src/blarg/repl.clj rename to src/main.clj index 46eade9..61bb700 100644 --- a/src/blarg/repl.clj +++ b/src/main.clj @@ -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)) \ No newline at end of file