update deps, reorg project files/config, and more
- remove lein-ring. focus on uberjar builds only (no war support now) while also allowing easy swapping out of standard jetty for jetty-async (thus, removal of lein-ring which does not support this) - "downgrade" to clojure/tools.logging. mainly out of preference for having logging work with dependencies using older logging solutions "out of the box" and using plain old log4j configuration
This commit is contained in:
parent
43ec433f31
commit
cad18b417f
|
@ -1,7 +1,8 @@
|
|||
(ns leiningen.new.yawt
|
||||
(:require [leiningen.new.templates :refer [renderer name-to-path sanitize sanitize-ns ->files]]
|
||||
[leiningen.core.main :as main]
|
||||
[clojure.string :as str]))
|
||||
(:require
|
||||
[leiningen.new.templates :refer [renderer name-to-path sanitize sanitize-ns ->files]]
|
||||
[leiningen.core.main :as main]
|
||||
[clojure.string :as str]))
|
||||
|
||||
(def render (renderer "yawt"))
|
||||
|
||||
|
@ -15,15 +16,15 @@
|
|||
#{"webapp"})
|
||||
|
||||
(defn get-base-files [data]
|
||||
[[".gitignore" (render "gitignore" data)]
|
||||
["project.clj" (render "project.clj" data)]
|
||||
["config/dev/config.edn" (render "config/dev/config.edn" data)]
|
||||
["config/release/config.edn" (render "config/release/config.edn" data)]
|
||||
["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}}/utils.clj" (render "src/root_ns/utils.clj" data)]
|
||||
["src/{{path}}/api/hello.clj" (render "src/root_ns/api/hello.clj" data)]])
|
||||
[[".gitignore" (render "gitignore" data)]
|
||||
["project.clj" (render "project.clj" data)]
|
||||
["env-resources/dev/config.edn" (render "env-resources/dev/config.edn" data)]
|
||||
["env-resources/uberjar/config.edn" (render "env-resources/uberjar/config.edn" data)]
|
||||
["env-resources/repl/config.edn" (render "env-resources/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}}/utils.clj" (render "src/root_ns/utils.clj" data)]
|
||||
["src/{{path}}/api/hello.clj" (render "src/root_ns/api/hello.clj" data)]])
|
||||
|
||||
(defn get-webapp-files [data]
|
||||
["resources/public/cljs"
|
||||
|
@ -48,11 +49,11 @@
|
|||
["resources/views/index.html" (render "resources/views/index.html" data)]
|
||||
["resources/views/error.html" (render "resources/views/error.html" data)]
|
||||
["resources/views/notfound.html" (render "resources/views/notfound.html" data)]
|
||||
["src-cljs/{{path}}/client/main.cljs" (render "src-cljs/root_ns/client/main.cljs" data)]
|
||||
["src-cljs/{{path}}/client/page_components.cljs" (render "src-cljs/root_ns/client/page_components.cljs" data)]
|
||||
["src-cljs/{{path}}/client/utils.cljs" (render "src-cljs/root_ns/client/utils.cljs" data)]
|
||||
["src-cljs/{{path}}/client/routes/home.cljs" (render "src-cljs/root_ns/client/routes/home.cljs" data)]
|
||||
["src-cljs/{{path}}/client/routes/misc.cljs" (render "src-cljs/root_ns/client/routes/misc.cljs" data)]
|
||||
["src/{{path}}/client/main.cljs" (render "src/root_ns/client/main.cljs" data)]
|
||||
["src/{{path}}/client/page_components.cljs" (render "src/root_ns/client/page_components.cljs" data)]
|
||||
["src/{{path}}/client/utils.cljs" (render "src/root_ns/client/utils.cljs" data)]
|
||||
["src/{{path}}/client/routes/home.cljs" (render "src/root_ns/client/routes/home.cljs" data)]
|
||||
["src/{{path}}/client/routes/misc.cljs" (render "src/root_ns/client/routes/misc.cljs" data)]
|
||||
["src/{{path}}/middleware.clj" (render "src/root_ns/middleware_webapp.clj" data)]
|
||||
["src/{{path}}/routes.clj" (render "src/root_ns/routes_webapp.clj" data)]
|
||||
["src/{{path}}/views.clj" (render "src/root_ns/views_webapp.clj" data)]
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
(ns user
|
||||
(:require weasel.repl.websocket
|
||||
cemerick.piggieback
|
||||
[edn-config.core :refer [env]])
|
||||
(:use {{root-ns}}.core))
|
||||
(:require
|
||||
weasel.repl.websocket
|
||||
cemerick.piggieback
|
||||
[edn-config.core :refer [env]])
|
||||
(:use
|
||||
{{root-ns}}.core))
|
||||
|
||||
(defn cljs-repl
|
||||
"after establishing a normal repl with leiningen (e.g. by running 'lein repl') *and* after
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
(ns user
|
||||
(:require [edn-config.core :refer [env]])
|
||||
(:use {{root-ns}}.core))
|
||||
(:require
|
||||
[edn-config.core :refer [env]])
|
||||
(:use
|
||||
{{root-ns}}.core))
|
||||
|
||||
(if (env :auto-start-server?)
|
||||
(.start (Thread. #(start-server))))
|
||||
|
|
|
@ -3,43 +3,44 @@
|
|||
:url "http://example.com/FIXME"
|
||||
:min-lein-version "2.0.0"
|
||||
|
||||
:source-paths ["src"{{#webapp}} "src-cljs"{{/webapp}}]
|
||||
:main {{root-ns}}.core
|
||||
|
||||
:dependencies [[org.clojure/clojure "1.6.0"]
|
||||
[compojure "1.2.1"]
|
||||
[metosin/ring-http-response "0.4.0"]
|
||||
[lib-noir "0.9.4"]
|
||||
[compojure "1.3.1"]
|
||||
[metosin/ring-http-response "0.5.2"]
|
||||
[lib-noir "0.9.5" :exclusions [javax.servlet/servlet-api]]
|
||||
[ring-custom-jetty-server "0.1.0"]
|
||||
[ring-server "0.3.1"]
|
||||
{{#webapp}}
|
||||
[org.clojure/clojurescript "0.0-2371"]
|
||||
[org.clojure/clojurescript "0.0-2511"]
|
||||
[weasel "0.4.2"]
|
||||
[clj-pebble "0.2.0"]
|
||||
[secretary "1.2.1"]
|
||||
[reagent "0.4.3"]
|
||||
[reagent "0.5.0-alpha"]
|
||||
[cljs-ajax "0.3.3"]
|
||||
{{/webapp}}
|
||||
{{#webservice}}
|
||||
[hiccup "1.0.5"]
|
||||
{{/webservice}}
|
||||
{{#postgresql}}
|
||||
[org.clojure/java.jdbc "0.3.5"]
|
||||
[postgresql/postgresql "8.4-702.jdbc4"]
|
||||
[ragtime "0.3.7"]
|
||||
[org.clojure/java.jdbc "0.3.6"]
|
||||
[org.postgresql/postgresql "9.2-1003-jdbc4"]
|
||||
[clojurewerkz/ragtime "0.4.0"]
|
||||
{{/postgresql}}
|
||||
{{#couchdb}}
|
||||
[com.ashafa/clutch "0.4.0"]
|
||||
[com.cemerick/url "0.1.1"]
|
||||
{{/couchdb}}
|
||||
[com.taoensso/timbre "3.3.1"]
|
||||
[org.clojure/tools.logging "0.3.1"]
|
||||
[log4j "1.2.16"]
|
||||
[org.slf4j/slf4j-log4j12 "1.7.1"]
|
||||
[edn-config "0.2"]
|
||||
[prone "0.6.0"]]
|
||||
[prone "0.8.0"]]
|
||||
|
||||
:plugins [[lein-ring "0.8.13"]
|
||||
:plugins [[lein-environ "1.0.0"]
|
||||
{{#webapp}}
|
||||
[lein-cljsbuild "1.0.3"]
|
||||
{{/webapp}}
|
||||
[lein-environ "1.0.0"]
|
||||
[lein-pprint "1.1.1"]]
|
||||
|
||||
{{#webapp}}
|
||||
|
@ -50,42 +51,42 @@
|
|||
:repl-options {:init-ns user}
|
||||
{{/webservice}}
|
||||
|
||||
:ring {:handler {{root-ns}}.core/app
|
||||
:init {{root-ns}}.core/init
|
||||
:destroy {{root-ns}}.core/destroy
|
||||
:port 8080}
|
||||
|
||||
{{#webapp}}
|
||||
:cljsbuild {:builds [{:id "dev"
|
||||
:source-paths ["src-cljs"]
|
||||
:compiler {:output-to "resources/public/cljs/main.js"
|
||||
:source-map "resources/public/cljs/main.js.map"
|
||||
:output-dir "resources/public/cljs/target"
|
||||
:optimizations :none
|
||||
:pretty-print true}}
|
||||
{:id "release"
|
||||
:source-paths ["src-cljs"]
|
||||
:compiler {:output-to "resources/public/cljs/main.js"
|
||||
:optimizations :advanced
|
||||
:pretty-print false
|
||||
:output-wrapper false
|
||||
:externs ["externs/jquery.js"]
|
||||
:closure-warnings {:non-standard-jsdoc :off}}}]}
|
||||
:cljsbuild {:builds {:main
|
||||
{:source-paths ["src/{{path}}/client"]
|
||||
:compiler {:output-to "resources/public/cljs/main.js"
|
||||
:source-map "resources/public/cljs/main.js.map"
|
||||
:output-dir "resources/public/cljs/target"
|
||||
:externs ["externs/jquery.js"]
|
||||
:optimizations :none
|
||||
:pretty-print true}}}}
|
||||
|
||||
{{/webapp}}
|
||||
:profiles {:release {:resource-paths ["config/release"]
|
||||
:profiles {:uberjar {:resource-paths ["env-resources/uberjar"]
|
||||
:aot :all
|
||||
:omit-source true
|
||||
{{#webapp}}
|
||||
:hooks [leiningen.cljsbuild]
|
||||
:cljsbuild {:jar true
|
||||
:builds {:main
|
||||
{:compiler ^:replace
|
||||
{:output-to "resources/public/cljs/main.js"
|
||||
:optimizations :advanced
|
||||
:pretty-print false}}}}
|
||||
{{/webapp}}
|
||||
:ring {:open-browser? false
|
||||
:stacktraces? false
|
||||
:auto-reload? false}}
|
||||
:dev {:resource-paths ["config/dev"]
|
||||
:dependencies [[ring-mock "0.1.5"]
|
||||
[ring/ring-devel "1.3.1"]
|
||||
{{#webapp}}
|
||||
[com.cemerick/piggieback "0.1.3"]
|
||||
{{/webapp}}
|
||||
:dev {:resource-paths ["env-resources/dev"]
|
||||
:dependencies [{{#webapp}}[com.cemerick/piggieback "0.1.3"]{{/webapp}}
|
||||
[pjstadig/humane-test-output "0.6.0"]]
|
||||
{{#postgresql}}
|
||||
:ragtime {:migrations ragtime.sql.files/migrations
|
||||
:database "jdbc:postgresql://localhost:5432/db_name?user=username&password=password"}
|
||||
{{/postgresql}}
|
||||
:injections [(require 'pjstadig.humane-test-output)
|
||||
(pjstadig.humane-test-output/activate!)]}
|
||||
:repl {:resource-paths ["config/repl"]
|
||||
:source-paths ["dev"]}})
|
||||
:repl {:resource-paths ["env-resources/repl"]
|
||||
:source-paths ["dev"]}}
|
||||
:aliases {"uberjar" ["do" "clean" {{#webapp}}["cljsbuild" "clean"]{{/webapp}} "uberjar"]{{#webapp}}
|
||||
"mkcljs" ["do" ["cljsbuild" "clean"] ["cljsbuild" "once"] ["cljsbuild" "auto"]]{{/webapp}}})
|
|
@ -1,16 +1,13 @@
|
|||
### direct log messages to stdout ###
|
||||
log4j.rootLogger=INFO, stdout, R
|
||||
|
||||
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
|
||||
log4j.appender.stdout.Target=System.out
|
||||
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
|
||||
log4j.rootLogger=info, stdout
|
||||
log4j.appender.stdout.layout.ConversionPattern=%d %-5p %c - %m%n
|
||||
|
||||
### file appender log ###
|
||||
log4j.logger.clojure.core=INFO, rollingFile
|
||||
|
||||
log4j.appender.rollingFile=org.apache.log4j.RollingFileAppender
|
||||
log4j.appender.rollingFile.File=${log4j.logdir}{{root-ns}}.log
|
||||
log4j.appender.rollingFile.MaxFileSize=1MB
|
||||
log4j.appender.rollingFile.MaxBackupIndex=1000
|
||||
log4j.appender.rollingFile.layout = org.apache.log4j.PatternLayout
|
||||
log4j.appender.rollingFile.layout.ConversionPattern=%m%n
|
||||
log4j.appender.R=org.apache.log4j.RollingFileAppender
|
||||
log4j.appender.R.File=${log4j.logdir}{{root-ns}}.log
|
||||
log4j.appender.R.MaxFileSize=10MB
|
||||
log4j.appender.R.MaxBackupIndex=20
|
||||
log4j.appender.R.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.R.layout.ConversionPattern=%d %-5p %c - %m%n
|
File diff suppressed because it is too large
Load diff
File diff suppressed because one or more lines are too long
|
@ -1,11 +1,12 @@
|
|||
(ns {{root-ns}}.client.main
|
||||
(:require [weasel.repl :as ws-repl]
|
||||
[reagent.core :as reagent]
|
||||
[secretary.core :as secretary :refer-macros [defroute]]
|
||||
[{{root-ns}}.client.page-components :refer [app-page]]
|
||||
[{{root-ns}}.client.utils :refer [hook-browser-navigation! dev? supports-ws?]]
|
||||
[{{root-ns}}.client.routes.home :refer [home-page]]
|
||||
[{{root-ns}}.client.routes.misc :refer [notfound-page]]))
|
||||
(:require
|
||||
[weasel.repl :as ws-repl]
|
||||
[reagent.core :as reagent]
|
||||
[secretary.core :as secretary :refer-macros [defroute]]
|
||||
[{{root-ns}}.client.page-components :refer [app-page]]
|
||||
[{{root-ns}}.client.utils :refer [hook-browser-navigation! dev? supports-ws?]]
|
||||
[{{root-ns}}.client.routes.home :refer [home-page]]
|
||||
[{{root-ns}}.client.routes.misc :refer [notfound-page]]))
|
||||
|
||||
(defn page [page-component & args]
|
||||
(reagent/render-component
|
||||
|
@ -20,7 +21,7 @@
|
|||
|
||||
(defroute "*" [] (page notfound-page))
|
||||
|
||||
(defn init-app []
|
||||
(defn init-app! []
|
||||
(when (dev?)
|
||||
(enable-console-print!)
|
||||
(if (and (supports-ws?)
|
||||
|
@ -29,4 +30,4 @@
|
|||
(secretary/set-config! :prefix "#")
|
||||
(hook-browser-navigation!))
|
||||
|
||||
(init-app)
|
||||
(init-app!)
|
|
@ -1,6 +1,7 @@
|
|||
(ns {{root-ns}}.client.routes.home
|
||||
(:require [reagent.core :refer [atom]]
|
||||
[{{root-ns}}.client.utils :refer [api-fetch!]]))
|
||||
(:require
|
||||
[reagent.core :refer [atom]]
|
||||
[{{root-ns}}.client.utils :refer [api-fetch!]]))
|
||||
|
||||
(defn home-page []
|
||||
(let [hello-response (atom nil)]
|
|
@ -1,11 +1,13 @@
|
|||
(ns {{root-ns}}.client.utils
|
||||
(:import goog.History)
|
||||
(:require [clojure.string :as str]
|
||||
[clojure.walk :refer [keywordize-keys]]
|
||||
[ajax.core :refer [GET]]
|
||||
[goog.events :as events]
|
||||
[goog.history.EventType :as EventType]
|
||||
[secretary.core :as secretary]))
|
||||
(:import
|
||||
goog.History)
|
||||
(:require
|
||||
[clojure.string :as str]
|
||||
[clojure.walk :refer [keywordize-keys]]
|
||||
[ajax.core :refer [GET]]
|
||||
[goog.events :as events]
|
||||
[goog.history.EventType :as EventType]
|
||||
[secretary.core :as secretary]))
|
||||
|
||||
(defn dev?
|
||||
"returns true if running in a dev build"
|
|
@ -1,73 +1,73 @@
|
|||
(ns {{root-ns}}.core
|
||||
(:gen-class)
|
||||
(: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]]
|
||||
(:require
|
||||
[compojure.core :refer [defroutes]]
|
||||
[compojure.route :as route]
|
||||
[noir.util.middleware :refer [app-handler]]
|
||||
[clojure.tools.logging :refer [info]]
|
||||
[ring-custom-jetty.server.standalone :refer [serve]]
|
||||
[ring.adapter.jetty :refer [run-jetty]]
|
||||
{{#webapp}}
|
||||
[clj-pebble.core :as pebble]
|
||||
[clj-pebble.web.middleware :refer [wrap-servlet-context-path]]
|
||||
[clj-pebble.core :as pebble]
|
||||
[clj-pebble.web.middleware :refer [wrap-servlet-context-path]]
|
||||
{{/webapp}}
|
||||
[edn-config.core :refer [env]]
|
||||
[prone.middleware :as prone]
|
||||
[edn-config.core :refer [env]]
|
||||
[prone.middleware :as prone]
|
||||
{{#postgresql}}
|
||||
[{{root-ns}}.db :as db]
|
||||
[{{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]))
|
||||
[{{root-ns}}.routes :refer [main-public-routes api-routes]]
|
||||
[{{root-ns}}.middleware :refer [wrap-exceptions not-found-handler]]))
|
||||
|
||||
(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 ...")
|
||||
(info "Starting up ...")
|
||||
|
||||
(if (env :repl)
|
||||
(log :info "Running in REPL."))
|
||||
(info "Running in REPL."))
|
||||
|
||||
{{#webapp}}
|
||||
(when (env :dev)
|
||||
(log :info "Running in :dev environment.")
|
||||
(pebble/set-options! :cache false
|
||||
:check-for-minified-web-resources false))
|
||||
(info "Running in :dev environment.")
|
||||
(pebble/set-options!
|
||||
:cache false
|
||||
:check-for-minified-web-resources false))
|
||||
{{/webapp}}
|
||||
{{#webservice}}
|
||||
(when (env :dev)
|
||||
(log :info "Running in :dev environment."))
|
||||
(info "Running in :dev environment."))
|
||||
{{/webservice}}
|
||||
{{#postgresql}}
|
||||
|
||||
(try
|
||||
(db/init!)
|
||||
(log :info "Database access initialized.")
|
||||
(info "Database access initialized.")
|
||||
(catch Exception ex
|
||||
(throw (Exception. "Database not available or bad connection information specified." ex))))
|
||||
{{/postgresql}}
|
||||
|
||||
(log :info "Application init finished."))
|
||||
(info "Application init finished."))
|
||||
|
||||
(defn destroy []
|
||||
(log :info "Shutting down ..."))
|
||||
(info "Shutting down ..."))
|
||||
|
||||
(defn wrap-env-middleware [handler]
|
||||
(if (env :dev)
|
||||
(-> handler (prone/wrap-exceptions))
|
||||
(-> handler (wrap-exceptions))))
|
||||
|
||||
(defroutes default-handler-routes
|
||||
(route/resources "/")
|
||||
(not-found-handler))
|
||||
|
||||
(defn get-handler []
|
||||
(app-handler
|
||||
[main-public-routes
|
||||
api-routes
|
||||
default-handler-routes]
|
||||
:middleware [wrap-env-middleware{{#webapp}}
|
||||
wrap-servlet-context-path{{/webapp}}]
|
||||
:access-rules []
|
||||
:formats [:json-kw :edn]))
|
||||
|
||||
;; support functions for starting the web app in a REPL / running an uberjar directly
|
||||
;; (not used otherwise)
|
||||
|
@ -76,18 +76,18 @@
|
|||
|
||||
(defn start-server [& [port]]
|
||||
(let [port (if port (Integer/parseInt port) 8080)]
|
||||
(reset! server
|
||||
(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))))
|
||||
(reset!
|
||||
server
|
||||
(serve
|
||||
(get-handler)
|
||||
{:run-server-fn run-jetty
|
||||
:port port
|
||||
:init init
|
||||
:auto-reload? (env :dev)
|
||||
:destroy destroy
|
||||
:join? false
|
||||
:open-browser? (not (env :dont-open-browser?))}))
|
||||
(info (str "Serving app at http://localhost:" port "/"))))
|
||||
|
||||
(defn stop-server []
|
||||
(.stop @server)
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
(ns {{root-ns}}.db
|
||||
(:require [com.ashafa.clutch :as couch]
|
||||
[com.ashafa.clutch.utils :as couch-utils]
|
||||
[cemerick.url :as url]
|
||||
[taoensso.timbre :refer [log]]
|
||||
[edn-config.core :refer [env]]))
|
||||
(:require
|
||||
[com.ashafa.clutch :as couch]
|
||||
[com.ashafa.clutch.utils :as couch-utils]
|
||||
[cemerick.url :as url]
|
||||
[edn-config.core :refer [env]]))
|
||||
|
||||
(defn db-url [db-name]
|
||||
(let [db-config (env :db)
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
(ns {{root-ns}}.db
|
||||
(:import (org.postgresql.ds PGPoolingDataSource))
|
||||
(:require [clojure.java.jdbc :as sql]
|
||||
[edn-config.core :refer [env]]))
|
||||
(:import
|
||||
(org.postgresql.ds PGPoolingDataSource))
|
||||
(:require
|
||||
[clojure.java.jdbc :as sql]
|
||||
[edn-config.core :refer [env]]))
|
||||
|
||||
(defonce db (atom nil))
|
||||
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
(ns {{root-ns}}.middleware
|
||||
(:require [taoensso.timbre :refer [log]]
|
||||
[noir.response :as response]
|
||||
[{{root-ns}}.views :as views])
|
||||
(:use {{root-ns}}.utils))
|
||||
(:require
|
||||
[clojure.tools.logging :refer [error]]
|
||||
[noir.response :as response]
|
||||
[{{root-ns}}.views :as views])
|
||||
(:use
|
||||
{{root-ns}}.utils))
|
||||
|
||||
(defn- api-request? [request]
|
||||
(.startsWith
|
||||
|
@ -16,7 +18,7 @@
|
|||
(try
|
||||
(handler request)
|
||||
(catch Throwable ex
|
||||
(log :error ex "Unhandled exception.")
|
||||
(error ex "Unhandled exception.")
|
||||
(if (api-request? request)
|
||||
(->> (response/json
|
||||
{:status "error"
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
(ns {{root-ns}}.middleware
|
||||
(:require [taoensso.timbre :refer [log]]
|
||||
[noir.response :as response]
|
||||
[{{root-ns}}.views :as views])
|
||||
(:use {{root-ns}}.utils))
|
||||
(:require
|
||||
[clojure.tools.logging :refer [error]]
|
||||
[noir.response :as response]
|
||||
[{{root-ns}}.views :as views])
|
||||
(:use
|
||||
{{root-ns}}.utils))
|
||||
|
||||
(defn- api-request? [request]
|
||||
(.startsWith
|
||||
|
@ -16,7 +18,7 @@
|
|||
(try
|
||||
(handler request)
|
||||
(catch Throwable ex
|
||||
(log :error ex "Unhandled exception.")
|
||||
(error ex "Unhandled exception.")
|
||||
(if (api-request? request)
|
||||
(->> (response/json
|
||||
{:status "error"
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
(ns {{root-ns}}.routes
|
||||
(:require [compojure.core :refer [defroutes context GET]]
|
||||
[{{root-ns}}.api.hello :as hello-api]
|
||||
[{{root-ns}}.views :as views]))
|
||||
(:require
|
||||
[compojure.core :refer [defroutes context GET]]
|
||||
[{{root-ns}}.api.hello :as hello-api]
|
||||
[{{root-ns}}.views :as views]))
|
||||
|
||||
(defroutes
|
||||
main-public-routes
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
(ns {{root-ns}}.routes
|
||||
(:require [compojure.core :refer [defroutes context GET]]
|
||||
[{{root-ns}}.api.hello :as hello-api]
|
||||
[{{root-ns}}.views :as views]))
|
||||
(:require
|
||||
[compojure.core :refer [defroutes context GET]]
|
||||
[{{root-ns}}.api.hello :as hello-api]
|
||||
[{{root-ns}}.views :as views]))
|
||||
|
||||
(defroutes
|
||||
main-public-routes
|
||||
|
|
|
@ -1,13 +1,8 @@
|
|||
(ns {{root-ns}}.utils
|
||||
(:require [clojure.string :as str]
|
||||
[clojure.stacktrace :refer [print-stack-trace]]))
|
||||
(:require
|
||||
[clojure.stacktrace :refer [print-stack-trace]]))
|
||||
|
||||
(defn get-throwable-stack-trace [throwable]
|
||||
(if throwable
|
||||
(with-out-str
|
||||
(print-stack-trace throwable))))
|
||||
|
||||
(defn log-formatter [{:keys [level throwable message timestamp hostname ns]} & [{:keys [nofonts?] :as appender-fmt-output-opts}]]
|
||||
(format "%s %s %s [%s] - %s%s"
|
||||
timestamp hostname (-> level name str/upper-case) ns (or message "")
|
||||
(or (get-throwable-stack-trace throwable) "")))
|
|
@ -1,10 +1,11 @@
|
|||
(ns {{root-ns}}.views
|
||||
(:require [clojure.string :as str]
|
||||
[clj-pebble.core :as pebble]
|
||||
[clj-pebble.web.middleware :refer [*servlet-context-path*]]
|
||||
[ring.util.response :as response]
|
||||
[compojure.response :refer [Renderable]]
|
||||
[edn-config.core :refer [env]]))
|
||||
(:require
|
||||
[clojure.string :as str]
|
||||
[clj-pebble.core :as pebble]
|
||||
[clj-pebble.web.middleware :refer [*servlet-context-path*]]
|
||||
[ring.util.response :as response]
|
||||
[compojure.response :refer [Renderable]]
|
||||
[edn-config.core :refer [env]]))
|
||||
|
||||
(def template-path "views/")
|
||||
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
(ns {{root-ns}}.views
|
||||
(:require [ring.util.response :as response]
|
||||
[compojure.response :refer [Renderable]])
|
||||
(:use hiccup.core
|
||||
hiccup.page))
|
||||
(:require
|
||||
[ring.util.response :as response]
|
||||
[compojure.response :refer [Renderable]])
|
||||
(:use
|
||||
hiccup.core
|
||||
hiccup.page))
|
||||
|
||||
(defn render-response [request page-fn & {:keys [params status content-type]}]
|
||||
(-> (page-fn request params)
|
||||
|
|
Reference in a new issue