From f84789fa19e51c879ff12279e7c61f4d042a0666 Mon Sep 17 00:00:00 2001 From: gered Date: Thu, 6 Nov 2014 15:15:21 -0500 Subject: [PATCH] merge handler and core namespaces --- src/leiningen/new/yawt.clj | 1 - src/leiningen/new/yawt/project.clj | 7 +- src/leiningen/new/yawt/src/root_ns/core.clj | 97 ++++++++++++++++--- .../new/yawt/src/root_ns/handler.clj | 66 ------------- 4 files changed, 86 insertions(+), 85 deletions(-) delete mode 100644 src/leiningen/new/yawt/src/root_ns/handler.clj diff --git a/src/leiningen/new/yawt.clj b/src/leiningen/new/yawt.clj index 23209b3..8740853 100644 --- a/src/leiningen/new/yawt.clj +++ b/src/leiningen/new/yawt.clj @@ -22,7 +22,6 @@ ["config/repl/config.edn" (render "config/repl/config.edn" data)] ["resources/log4j.properties" (render "resources/log4j.properties" data)] ["src/{{path}}/core.clj" (render "src/root_ns/core.clj" data)] - ["src/{{path}}/handler.clj" (render "src/root_ns/handler.clj" data)] ["src/{{path}}/utils.clj" (render "src/root_ns/utils.clj" data)] ["src/{{path}}/api/hello.clj" (render "src/root_ns/api/hello.clj" data)]]) diff --git a/src/leiningen/new/yawt/project.clj b/src/leiningen/new/yawt/project.clj index b346978..86f0ae0 100644 --- a/src/leiningen/new/yawt/project.clj +++ b/src/leiningen/new/yawt/project.clj @@ -50,9 +50,10 @@ :repl-options {:init-ns user} {{/webservice}} - :ring {:handler {{root-ns}}.handler/app - :init {{root-ns}}.handler/init - :destroy {{root-ns}}.handler/destroy} + :ring {:handler {{root-ns}}.core/app + :init {{root-ns}}.core/init + :destroy {{root-ns}}.core/destroy + :port 8080} {{#webapp}} :cljsbuild {:builds [{:id "dev" diff --git a/src/leiningen/new/yawt/src/root_ns/core.clj b/src/leiningen/new/yawt/src/root_ns/core.clj index fa7dd44..99fe288 100644 --- a/src/leiningen/new/yawt/src/root_ns/core.clj +++ b/src/leiningen/new/yawt/src/root_ns/core.clj @@ -1,28 +1,95 @@ (ns {{root-ns}}.core (:gen-class) - (:require [ring.middleware.file :refer [wrap-file]] + (:require [compojure.core :refer [defroutes]] + [compojure.route :as route] + [noir.util.middleware :refer [app-handler]] + [taoensso.timbre :refer [log set-config!]] [ring.middleware.file-info :refer [wrap-file-info]] [ring.server.standalone :refer [serve]] + [ring.middleware.file :refer [wrap-file]] +{{#webapp}} + [clj-jtwig.core :as jtwig] + [clj-jtwig.web.middleware :refer [wrap-servlet-context-path]] +{{/webapp}} [edn-config.core :refer [env]] - [{{root-ns}}.handler :refer [app init destroy]])) + [prone.middleware :as prone] +{{#postgresql}} + [{{root-ns}}.db :as db] +{{/postgresql}} + [{{root-ns}}.routes :refer [main-public-routes api-routes]] + [{{root-ns}}.middleware :refer [wrap-exceptions not-found-handler]] + [{{root-ns}}.utils :refer [log-formatter]])) + +(defroutes default-handler-routes + (route/resources "/") + (not-found-handler)) + +(def app + (app-handler + [main-public-routes api-routes default-handler-routes] + :middleware [(if (env :dev) + prone/wrap-exceptions + wrap-exceptions){{#webapp}} + wrap-servlet-context-path{{/webapp}}] + :access-rules [] + :formats [:json-kw :edn])) + +(defn init [] + (set-config! [:shared-appender-config :spit-filename] "{{root-ns}}.log") + (set-config! [:appenders :spit :enabled?] true) + (set-config! [:fmt-output-fn] log-formatter) + + (log :info "Starting up ...") + + (if (env :repl) + (log :info "Running in REPL.")) + +{{#webapp}} + (when (env :dev) + (log :info "Running in :dev environment.") + (log :info "Disabling Jtwig template caching.") + (jtwig/set-options! :cache-compiled-templates false) + (jtwig/set-options! :check-for-minified-web-resources false)) +{{/webapp}} +{{#webservice}} + (when (env :dev) + (log :info "Running in :dev environment.")) +{{/webservice}} +{{#postgresql}} + + (try + (db/init!) + (log :info "Database access initialized.") + (catch Exception ex + (throw (Exception. "Database not available or bad connection information specified." ex)))) +{{/postgresql}} + + (log :info "Application init finished.")) + +(defn destroy [] + (log :info "Shutting down ...")) + + +;; support functions for starting the web app in a REPL / running an uberjar directly +;; (not used otherwise) (defonce server (atom nil)) -(defn get-handler [] - (-> #'app - (wrap-file "resources") - (wrap-file-info))) +(defonce server (atom nil)) (defn start-server [& [port]] - (let [port (if port (Integer/parseInt port) 3000)] + (let [port (if port (Integer/parseInt port) 8080)] (reset! server - (serve (get-handler) - {:port port - :init init - :auto-reload? true - :destroy destroy - :join? false - :open-browser? (not (env :dont-open-browser?))})) + (serve + (-> #'app + (wrap-file "resources") + (wrap-file-info)) + {:port port + :init init + :auto-reload? true + :destroy destroy + :join? false + :open-browser? (not (env :dont-open-browser?))})) (println (str "You can view the site at http://localhost:" port)))) (defn stop-server [] @@ -30,4 +97,4 @@ (reset! server nil)) (defn -main [& args] - (start-server)) \ No newline at end of file + (start-server)) diff --git a/src/leiningen/new/yawt/src/root_ns/handler.clj b/src/leiningen/new/yawt/src/root_ns/handler.clj deleted file mode 100644 index 3e36f96..0000000 --- a/src/leiningen/new/yawt/src/root_ns/handler.clj +++ /dev/null @@ -1,66 +0,0 @@ -(ns {{root-ns}}.handler - (:require [compojure.core :refer [defroutes]] - [compojure.route :as route] - [noir.util.middleware :refer [app-handler]] - [taoensso.timbre :refer [log set-config!]] -{{#webapp}} - [clj-jtwig.core :as jtwig] - [clj-jtwig.web.middleware :refer [wrap-servlet-context-path]] -{{/webapp}} - [edn-config.core :refer [env]] - [prone.middleware :as prone] -{{#postgresql}} - [{{root-ns}}.db :as db] -{{/postgresql}} - [{{root-ns}}.routes :refer [main-public-routes api-routes]] - [{{root-ns}}.middleware :refer [wrap-exceptions not-found-handler]] - [{{root-ns}}.utils :refer [log-formatter]])) - -(defroutes default-handler-routes - (route/resources "/") - (not-found-handler)) - -(def app - (app-handler - [main-public-routes api-routes default-handler-routes] - :middleware [(if (env :dev) - prone/wrap-exceptions - wrap-exceptions){{#webapp}} - wrap-servlet-context-path{{/webapp}}] - :access-rules [] - :formats [:json-kw :edn])) - -(defn init [] - (set-config! [:shared-appender-config :spit-filename] "{{root-ns}}.log") - (set-config! [:appenders :spit :enabled?] true) - (set-config! [:fmt-output-fn] log-formatter) - - (log :info "Starting up ...") - - (if (env :repl) - (log :info "Running in REPL.")) - -{{#webapp}} - (when (env :dev) - (log :info "Running in :dev environment.") - (log :info "Disabling Jtwig template caching.") - (jtwig/set-options! :cache-compiled-templates false) - (jtwig/set-options! :check-for-minified-web-resources false)) -{{/webapp}} -{{#webservice}} - (when (env :dev) - (log :info "Running in :dev environment.")) -{{/webservice}} -{{#postgresql}} - - (try - (db/init!) - (log :info "Database access initialized.") - (catch Exception ex - (throw (Exception. "Database not available or bad connection information specified." ex)))) -{{/postgresql}} - - (log :info "Application init finished.")) - -(defn destroy [] - (log :info "Shutting down ..."))