hi clojure-users,
i have a question regarding the setup and propagation
of config-params.
to configure a clojure-based web-app, i use a global var
*opts* that is setup like this:
(defn get-opts
[environment]
(condp = environment
:development
{ :webapp-context "/mywebapp"
:webapp-dir "src/main/webapp"
:authentication true
:show-sql true}
:test
{ :webapp-context "/mywebapp"
:webapp-dir "src/main/webapp"
:authentication false
:show-sql true}
:production
{ :webapp-context "/mywebapp"
:webapp-dir "/appserver/tomcat/apache-tomcat-5.5.25/webapps/
mywebapp"
:authentication true
:show-sql false}
(throw (IllegalArgumentException. (str "unexpected environment: "
environment)))))
(def ^:dynamic *opts* (get-opts :development))
i run tests like this:
(binding [*opts* (get-opts :test)]
(run-tests)))
references to *opts* are scattered all over my clojure-code
so that many of the functions are impure. this seems like
a smell to me and there are probably cleaner ways to propagate
config-params (keep functions pure) ... what are they ?
thanks
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en