Skip to content

Commit 739ad8d

Browse files
yogthosg026r
authored andcommitted
updated to latest Luminus template
1 parent 78cb499 commit 739ad8d

33 files changed

+381
-281
lines changed

Procfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
web: java $JVM_OPTS -cp target/kata.jar clojure.main -m kata.core
1+
web: java $JVM_OPTS -cp target/uberjar/kata.jar clojure.main -m kata.core

env/dev/clj/kata/config.clj

-11
This file was deleted.

env/prod/clj/kata/.DS_Store

-6 KB
Binary file not shown.

env/prod/clj/kata/config.clj

-8
This file was deleted.

project.clj

+94-82
Original file line numberDiff line numberDiff line change
@@ -3,116 +3,128 @@
33
:description "FIXME: write description"
44
:url "http://example.com/FIXME"
55

6-
:dependencies [[org.clojure/clojure "1.7.0"]
7-
[selmer "0.9.5"]
8-
[markdown-clj "0.9.82"]
9-
[environ "1.0.1"]
10-
[metosin/ring-middleware-format "0.6.0"]
6+
:dependencies [[org.clojure/clojure "1.8.0"]
7+
[selmer "1.0.4"]
8+
[markdown-clj "0.9.87"]
9+
[ring-middleware-format "0.7.0"]
1110
[metosin/ring-http-response "0.6.5"]
12-
[bouncer "0.3.3"]
13-
[org.clojure/tools.nrepl "0.2.12"]
14-
[org.webjars/bootstrap "3.3.5"]
15-
[org.webjars/jquery "2.1.4"]
16-
[com.taoensso/tower "3.0.2"]
17-
[com.taoensso/timbre "4.1.4"]
18-
[com.fzakaria/slf4j-timbre "0.2.1"]
19-
[compojure "1.4.0"]
11+
[bouncer "1.0.0"]
12+
[org.webjars/bootstrap "4.0.0-alpha.2"]
13+
[org.webjars/font-awesome "4.5.0"]
14+
[org.webjars.bower/tether "1.1.1"]
15+
[org.clojure/tools.logging "0.3.1"]
16+
[compojure "1.5.0"]
2017
[ring-webjars "0.1.1"]
21-
[ring/ring-defaults "0.1.5"]
22-
[ring "1.4.0" :exclusions [ring/ring-jetty-adapter]]
18+
[ring/ring-defaults "0.2.0"]
2319
[mount "0.1.10"]
24-
[migratus "0.8.7"]
25-
[org.postgresql/postgresql "9.3-1102-jdbc41"]
26-
[conman "0.4.5"]
27-
[com.h2database/h2 "1.4.188"]
28-
[org.clojure/clojurescript "1.7.170" :scope "provided"]
20+
[cprop "0.1.7"]
21+
[org.clojure/tools.cli "0.3.3"]
22+
[luminus-nrepl "0.1.4"]
23+
[org.webjars/webjars-locator-jboss-vfs "0.1.0"]
24+
[luminus-immutant "0.1.9"]
25+
[luminus-migrations "0.1.0"]
26+
[conman "0.4.9"]
27+
[com.h2database/h2 "1.4.191"]
28+
[org.clojure/clojurescript "1.8.40" :scope "provided"]
2929
[reagent "0.5.1"]
30-
[reagent-forms "0.5.13"]
31-
[reagent-utils "0.1.5"]
30+
[reagent-forms "0.5.22"]
31+
[reagent-utils "0.1.7"]
3232
[secretary "1.2.3"]
33-
[org.clojure/core.async "0.2.374"]
34-
[cljs-ajax "0.5.1"]
33+
[cljs-ajax "0.5.4"]
34+
[metosin/compojure-api "1.0.2"]
35+
[luminus-log4j "0.1.3"]
3536
[clojail "1.0.6"]
36-
[re-com "0.8.0"]
37-
[metosin/compojure-api "0.24.0"]
38-
[metosin/ring-swagger-ui "2.1.3-2"]
39-
[org.immutant/web "2.1.1" :exclusions [ch.qos.logback/logback-classic]]]
37+
[re-com "0.8.0"]]
4038

4139
:min-lein-version "2.0.0"
42-
:uberjar-name "kata.jar"
43-
;; needed for evaluating code
44-
:jvm-opts ["-server" "-Djava.security.policy=sandbox.policy"]
40+
41+
:jvm-opts ["-server" "-Dconf=.lein-env" "-Djava.security.policy=sandbox.policy"]
42+
:source-paths ["src/clj" "src/cljc"]
4543
:resource-paths ["resources" "target/cljsbuild"]
4644

4745
:main kata.core
48-
:migratus {:store :database}
46+
:migratus {:store :database :db ~(get (System/getenv) "DATABASE_URL")}
4947

50-
:plugins [[lein-environ "1.0.1"]
51-
[migratus-lein "0.2.0"]
48+
:plugins [[lein-cprop "1.0.1"]
49+
[migratus-lein "0.2.6"]
5250
[lein-cljsbuild "1.1.1"]]
53-
:clean-targets ^{:protect false} [:target-path [:cljsbuild :builds :app :compiler :output-dir] [:cljsbuild :builds :app :compiler :output-to]]
51+
:clean-targets ^{:protect false}
52+
[:target-path
53+
[:cljsbuild :builds :app :compiler :output-dir]
54+
[:cljsbuild :builds :app :compiler :output-to]]
5455
:cljsbuild
5556
{:builds
5657
{:app
57-
{:source-paths ["src-cljs"]
58+
{:source-paths ["src/cljc" "src/cljs"]
5859
:compiler
59-
{:output-to "target/cljsbuild/public/js/app.js"
60-
:output-dir "target/cljsbuild/public/js/out"
61-
:externs ["resources/externs.js"
62-
"react/externs/react.js"]
63-
:pretty-print true}}}}
60+
{:output-to "target/cljsbuild/public/js/app.js"
61+
:output-dir "target/cljsbuild/public/js/out"
62+
:externs ["resources/externs.js"
63+
"react/externs/react.js"]
64+
:pretty-print true}}}}
6465

66+
:target-path "target/%s/"
6567
:profiles
6668
{:uberjar {:omit-source true
67-
:env {:production true}
68-
:prep-tasks ["compile" ["cljsbuild" "once"]]
69-
:cljsbuild
70-
{:builds
71-
{:app
72-
{:source-paths ["env/prod/cljs"]
73-
:compiler
74-
{:optimizations :simple
75-
:pretty-print false
76-
:closure-warnings
77-
{:externs-validation :off :non-standard-jsdoc :off}}}}}
69+
70+
:prep-tasks ["compile" ["cljsbuild" "once"]]
71+
:cljsbuild
72+
{:builds
73+
{:app
74+
{:source-paths ["env/prod/cljs"]
75+
:compiler
76+
{:optimizations :advanced
77+
:pretty-print false
78+
:closure-warnings
79+
{:externs-validation :off :non-standard-jsdoc :off}}}}}
7880

7981
:aot :all
80-
:source-paths ["env/prod/clj"]}
82+
:uberjar-name "kata.jar"
83+
:source-paths ["env/prod/clj"]
84+
:resource-paths ["env/prod/resources"]}
8185
:dev [:project/dev :profiles/dev]
8286
:test [:project/test :profiles/test]
83-
:project/dev {:dependencies [[prone "0.8.2"]
87+
:project/dev {:dependencies [[prone "1.1.1"]
8488
[ring/ring-mock "0.3.0"]
8589
[ring/ring-devel "1.4.0"]
86-
[pjstadig/humane-test-output "0.7.0"]
87-
[com.cemerick/piggieback "0.2.2-SNAPSHOT"]
88-
[lein-figwheel "0.5.0-2"]
89-
[mvxcvi/puget "1.0.0"]]
90-
:plugins [[lein-figwheel "0.5.0-2"]]
91-
:cljsbuild
92-
{:builds
93-
{:app
94-
{:source-paths ["env/dev/cljs"]
95-
:compiler
96-
{:main "kata.app" :asset-path "/js/out" :source-map true}}}}
90+
[pjstadig/humane-test-output "0.8.0"]
91+
[lein-figwheel "0.5.2"]
92+
[lein-doo "0.1.6"]
93+
[com.cemerick/piggieback "0.2.2-SNAPSHOT"]]
94+
:plugins [[com.jakemccrary/lein-test-refresh "0.14.0"]
95+
[lein-figwheel "0.5.2"]
96+
[lein-doo "0.1.6"]
97+
[org.clojure/clojurescript "1.8.40"]]
9798

98-
:figwheel
99-
{:http-server-root "public"
100-
:nrepl-port 7002
101-
:nrepl-middleware ["cemerick.piggieback/wrap-cljs-repl"]
102-
:css-dirs ["resources/public/css"]}
99+
:cljsbuild
100+
{:builds
101+
{:app
102+
{:source-paths ["env/dev/cljs"]
103+
:compiler
104+
{:main "kata.app"
105+
:asset-path "/js/out"
106+
:optimizations :none
107+
:source-map true}}
108+
:test
109+
{:source-paths ["src/cljc" "src/cljs" "test/cljs"]
110+
:compiler
111+
{:output-to "target/test.js"
112+
:main "kata.doo-runner"
113+
:optimizations :whitespace
114+
:pretty-print true}}}}
103115

104-
:source-paths ["env/dev/clj"]
105-
:repl-options {:init-ns kata.core}
116+
:figwheel
117+
{:http-server-root "public"
118+
:nrepl-port 7002
119+
:css-dirs ["resources/public/css"]}
120+
:doo {:build "test"}
121+
:source-paths ["env/dev/clj" "test/clj"]
122+
:resource-paths ["env/dev/resources"]
123+
:repl-options {:init-ns user
124+
:nrepl-middleware
125+
[cemerick.piggieback/wrap-cljs-repl]}
106126
:injections [(require 'pjstadig.humane-test-output)
107-
(pjstadig.humane-test-output/activate!)]
108-
;;when :nrepl-port is set the application starts the nREPL server on load
109-
:env {:dev true
110-
:port 3000
111-
:nrepl-port 7000
112-
:log-level :trace}}
113-
:project/test {:env {:test true
114-
:port 3001
115-
:nrepl-port 7001
116-
:log-level :trace}}
127+
(pjstadig.humane-test-output/activate!)]}
128+
:project/test {:resource-paths ["env/dev/resources" "env/test/resources"]}
117129
:profiles/dev {}
118130
:profiles/test {}})

resources/docs/docs.md

+9-12
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,18 @@ If you haven't already, then please follow the steps below to configure your dat
1515
Request middleware functions are located under the `kata.middleware` namespace.
1616

1717
This namespace is reserved for any custom middleware for the application. Some default middleware is
18-
already defined here.
18+
already defined here. The middleware is assembled in the `wrap-base` function.
1919

20-
The two function for organizing the middleware are called `wrap-dev` and `wrap-base`.
21-
22-
Any middleware that you only wish to run in development mode should be added inside the `wrap-dev` function.
23-
This middleware will only be invoked when the environment contains the `:dev` key with a truthy value.
20+
Middleware used for development is placed in the `kata.dev-middleware` namespace found in
21+
the `env/dev/clj/` source path.
2422

2523
### Here are some links to get started
2624

2725
1. [HTML templating](http://www.luminusweb.net/docs/html_templating.md)
2826
2. [Accessing the database](http://www.luminusweb.net/docs/database.md)
29-
3. [Serving static resources](http://www.luminusweb.net/docs/static_resources.md)
30-
4. [Setting response types](http://www.luminusweb.net/docs/responses.md)
31-
5. [Defining routes](http://www.luminusweb.net/docs/routes.md)
32-
6. [Adding middleware](http://www.luminusweb.net/docs/middleware.md)
33-
7. [Sessions and cookies](http://www.luminusweb.net/docs/sessions_cookies.md)
34-
8. [Security](http://www.luminusweb.net/docs/security.md)
35-
9. [Deploying the application](http://www.luminusweb.net/docs/deployment.md)
27+
3. [Setting response types](http://www.luminusweb.net/docs/responses.md)
28+
4. [Defining routes](http://www.luminusweb.net/docs/routes.md)
29+
5. [Adding middleware](http://www.luminusweb.net/docs/middleware.md)
30+
6. [Sessions and cookies](http://www.luminusweb.net/docs/sessions_cookies.md)
31+
7. [Security](http://www.luminusweb.net/docs/security.md)
32+
8. [Deploying the application](http://www.luminusweb.net/docs/deployment.md)

resources/public/css/screen.css

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ body {
33
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
44
height: 100%;
55
padding-top: 40px;
6-
background-color: #f9f8ee;
76
}
7+
{% if cljs %}
88
@-moz-keyframes three-quarters-loader {
99
0% {
1010
-moz-transform: rotate(0deg);

resources/sql/queries.sql

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ VALUES (:title, :submitter, :description, :code)
66

77
-- :name get-examples :? :*
88
-- :doc get examples
9-
SELECT * FROM problems
9+
SELECT * FROM problems

src/clj/kata/config.clj

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
(ns kata.config
2+
(:require [cprop.core :refer [load-config]]
3+
[cprop.source :as source]
4+
[mount.core :refer [args defstate]]))
5+
6+
(defstate env :start (load-config
7+
:merge
8+
[(args)
9+
(source/from-system-props)
10+
(source/from-env)]))

src/clj/kata/core.clj

+61
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
(ns kata.core
2+
(:require [kata.handler :as handler]
3+
[luminus.repl-server :as repl]
4+
[luminus.http-server :as http]
5+
[luminus-migrations.core :as migrations]
6+
[kata.config :refer [env]]
7+
[clojure.tools.cli :refer [parse-opts]]
8+
[clojure.tools.logging :as log]
9+
[kata.env :refer [defaults]]
10+
[luminus.logger :as logger]
11+
[mount.core :as mount])
12+
(:gen-class))
13+
14+
(def cli-options
15+
[["-p" "--port PORT" "Port number"
16+
:parse-fn #(Integer/parseInt %)]])
17+
18+
(mount/defstate ^{:on-reload :noop}
19+
http-server
20+
:start
21+
(http/start
22+
(-> env
23+
(assoc :handler handler/app)
24+
(update :port #(or (-> env :options :port) %))))
25+
:stop
26+
(http/stop http-server))
27+
28+
(mount/defstate ^{:on-reload :noop}
29+
repl-server
30+
:start
31+
(when-let [nrepl-port (env :nrepl-port)]
32+
(repl/start {:port nrepl-port}))
33+
:stop
34+
(when repl-server
35+
(repl/stop repl-server)))
36+
37+
(defn stop-app []
38+
(doseq [component (:stopped (mount/stop))]
39+
(log/info component "stopped"))
40+
(shutdown-agents))
41+
42+
(defn start-app [args]
43+
(doseq [component (-> args
44+
(parse-opts cli-options)
45+
mount/start-with-args
46+
:started)]
47+
(log/info component "started"))
48+
(logger/init (:log-config env))
49+
((:init defaults))
50+
(.addShutdownHook (Runtime/getRuntime) (Thread. stop-app)))
51+
52+
(defn -main [& args]
53+
(cond
54+
(some #{"migrate" "rollback"} args)
55+
(do
56+
(mount/start #'kata.config/env)
57+
(migrations/migrate args (env :database-url))
58+
(System/exit 0))
59+
:else
60+
(start-app args)))
61+

src/clj/kata/db/core.clj

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
(ns kata.db.core
2+
(:require
3+
[conman.core :as conman]
4+
[mount.core :refer [defstate]]
5+
[kata.config :refer [env]]))
6+
7+
; Example of profile :database-url jdbc:postgresql://localhost/kata_dev?user=username&password=securepassword
8+
(defstate ^:dynamic *db*
9+
:start (conman/connect!
10+
{:datasource
11+
(doto (org.h2.jdbcx.JdbcDataSource.)
12+
(.setURL (env :database-url))
13+
(.setUser "")
14+
(.setPassword ""))})
15+
:stop (conman/disconnect! *db*))
16+
17+
(conman/bind-connection *db* "sql/queries.sql")
18+

src/clj/kata/handler.clj

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
(ns kata.handler
2+
(:require [compojure.core :refer [routes wrap-routes]]
3+
[kata.layout :refer [error-page]]
4+
[kata.routes.home :refer [home-routes]]
5+
[kata.routes.services :refer [service-routes]]
6+
[compojure.route :as route]
7+
[kata.middleware :as middleware]))
8+
9+
(def app-routes
10+
(routes
11+
#'service-routes
12+
(wrap-routes #'home-routes middleware/wrap-csrf)
13+
(route/not-found
14+
(:body
15+
(error-page {:status 404
16+
:title "page not found"})))))
17+
18+
(def app (middleware/wrap-base #'app-routes))

0 commit comments

Comments
 (0)