A very simple library for loading application level config from a configuration file in a nice way, with caching and reloading functionality.
Any other configuration libraries I found were either massively overkill for my needs (full on validation schemas built in), too complicated to set up and pass around or involved simply read-evaling a whole namespace which could be insecure depending where you get your config. Simple but useful - I found myself duplicating this code in almost all my projects before making it into a library! Well tested and documented, there are very few moving parts so I expect this to stay stable and not really change over time. Source: https://github.com/TouchType/conf-er Clojars: [conf-er "1.0.1"] The idea is to have a single configuration file which consists of a keyworded map, you then look up individual properties with nested keywords, for example your config file looks like this (simple EDN map): ;; my-config.conf > {:username "joe.bloggs" > :password "letmein" > :database {:host "127.0.0.1" > :port 1234} > :my.library/number 42} And then look up the configuration from anywhere within your program! Simply include the conf-er namespace (use 'conf-er) > (config :username) => "joe.bloggs" > (configured? :database) => true > (config :database) => {:host "127.0.0.1" :port 1234} > (config :database :port) => 1234 Tell your program where to find the configuration file from your leiningen project.clj during development, or if you are distributing a jar then add the property onto the java command line call: > > ... > :jvm-opts ["-Dconfig=~/my-config.conf"] > ... (config :database :connections) => (Exception "Couldn't find :database :connections in configuration file") (opt-config :database :connections) => nil If you use this from within a library, you must namespace your configuration in case the application using your library also wishes to use conf-er. You can do this like so: (ns my.library > (:require [conf-er :refer [config]])) > (config ::number) => 42 Here :number will expand out to the namespaced keyword :my.library/number, which we put in our configuration file earlier. Hope this is of use to some people. Adam -- -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to [email protected] Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
