Skip to content
This repository was archived by the owner on Jul 15, 2021. It is now read-only.

Commit 1145121

Browse files
committed
Better handling of db connection
1 parent a3b7225 commit 1145121

File tree

2 files changed

+26
-12
lines changed

2 files changed

+26
-12
lines changed

project.clj

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,7 @@
2020
[lein-resource "0.3.1"]
2121
[lein-httpd "1.0.0"]
2222
[lein-shell "0.3.0"]
23-
[fsrun "0.1.2"]
24-
[com.cemerick/austin "0.1.4-SNAPSHOT"]]
23+
[fsrun "0.1.2"]]
2524
:source-paths ["src"]
2625
:target-path "target/"
2726
:uberjar-exclusions [#".*\.cljs"]
@@ -38,8 +37,10 @@
3837
;; From Om jar
3938
:preamble ["react/react.min.js"]
4039
:externs ["react/externs/react.js"]}}}}
41-
:ring {:handler dacom.server/app}
42-
:profiles {:dev {:source-paths ["utils/src"]
40+
:ring {:init dacom.server/init-conn
41+
:handler dacom.server/app}
42+
:profiles {:dev {:plugins [[com.cemerick/austin "0.1.4-SNAPSHOT"]]
43+
:source-paths ["utils/src"]
4344
:repl-options {:init-ns dacom.repl}
4445
:resource {:resource-paths ["web-resources/pages"]
4546
:target-path "static"
@@ -49,10 +50,13 @@
4950
{:body "goog.require('dacom.client')"}
5051
{:body "goog.require('dacom.repl')"}]}}}
5152
:db {:main dacom.db}
52-
:prod {:target-path "dist/server/"
53+
:prod {:main dacom.server
54+
:target-path "dist/server/"
5355
:resource {:resource-paths ["web-resources/pages"]
5456
:target-path "dist/static"
55-
:extra-values {:scripts [{:src "js/main.js"}]}}}}
57+
:extra-values {:scripts [{:src "js/main.js"}]}}}
58+
:uberjar {:omit-source true
59+
:aot :all}}
5660
:aliases {"bower" ["shell" "bower" "install"]
5761
"less-debug" ["shell" "lessc" "web-resources/stylesheets/style.less" "static/css/style.css"
5862
"--include-path=bower_components/bootstrap/less/" "--source-map"]
@@ -62,6 +66,6 @@
6266
"install-db" ["with-profile" "db" "run"]
6367
"run-client" ["do" "bower," "cljsbuild" "once," "less-debug," "resource," "httpd" "8000"]
6468
"run-server" ["ring" "server-headless"]
65-
"dist" ["with-profile" "prod" "do" "ring" "uberjar," "cljsbuild" "once" "prod," "less-prod,"
69+
"dist" ["with-profile" "prod" "do" "uberjar," "cljsbuild" "once" "prod," "less-prod,"
6670
"resource"]}
6771
:clean-targets [:target-path :compile-path "static" "dist"])

src/dacom/server.clj

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,20 @@
44
(ns dacom.server
55
(:require [ring.middleware.cors :as cors]
66
[ring.middleware.format :refer [wrap-restful-format]]
7+
[ring.adapter.jetty :as jetty]
78
[compojure.response :as response]
89
[datomic.api :as d :refer [db q]]
910
[compojure.core :refer [GET defroutes]]
10-
[dacom.config :refer [read-config]]))
11+
[dacom.config :refer [read-config]])
12+
(:gen-class))
1113

12-
(def conn
13-
(d/connect (:datomic-uri (read-config))))
14+
(defonce conn (atom nil))
15+
16+
(defn init-conn []
17+
(reset! conn (d/connect (:datomic-uri (read-config)))))
1418

1519
(defn get-datomic-message []
16-
(ffirst (q '[:find ?m :where [?e :demo/message ?m]] (db conn))))
20+
(ffirst (q '[:find ?m :where [?e :demo/message ?m]] (db @conn))))
1721

1822
(defroutes handler
1923
(GET "/" [] {:body {:compojure-message (str (get-datomic-message) ", Compojure")}}))
@@ -24,4 +28,10 @@
2428
:access-control-allow-origin #"http://localhost:8000"
2529
:access-control-allow-methods ["GET"]
2630
:access-control-allow-headers ["Content-Type"])
27-
(wrap-restful-format :formats [:edn])))
31+
(wrap-restful-format :formats [:edn])))
32+
33+
(defn -main [& [port]]
34+
(init-conn)
35+
(let [port (Integer. (or port (:port (read-config)) (System/getenv "PORT") 3000))]
36+
(jetty/run-jetty app {:port port :join? false})
37+
(println "Started server on port" port)))

0 commit comments

Comments
 (0)