guarding start and stop (try/catch)

This commit is contained in:
anatoly 2015-10-20 17:40:54 -04:00
parent c615ce0d3c
commit 4748a7ff97

View file

@ -1,7 +1,7 @@
(ns mount (ns mount
(:require [clojure.tools.macro :as macro] (:require [clojure.tools.macro :as macro]
[clojure.tools.namespace.repl :refer [disable-reload!]] [clojure.tools.namespace.repl :refer [disable-reload!]]
[clojure.tools.logging :refer [info debug]])) [clojure.tools.logging :refer [info debug error]]))
(disable-reload!) (disable-reload!)
@ -36,14 +36,21 @@
(defn- up [var {:keys [ns name start started?]}] (defn- up [var {:keys [ns name start started?]}]
(when-not started? (when-not started?
(debug ">> starting.. " name) (debug ">> starting.. " name)
(intern ns (symbol name) (start)) (let [s (try (start)
(alter-meta! var assoc :started? true))) (catch Throwable t
(throw (RuntimeException. (str "could not start [" name "] due to") t))))]
(intern ns (symbol name) s)
(alter-meta! var assoc :started? true))))
(defn- down [var {:keys [name stop started?]}] (defn- down [var {:keys [name stop started?]}]
(when started? (when started?
(debug "<< stopping.. " name) (debug "<< stopping.. " name)
(alter-meta! var assoc :started? false) (when stop
(when stop (stop)))) (try
(stop)
(catch Throwable t
(throw (RuntimeException. (str "could not stop [" name "] due to") t)))))
(alter-meta! var assoc :started? false)))
(defn- f-states [f order] (defn- f-states [f order]
(->> (all-ns) (->> (all-ns)