Clojure ::将配置数据存储在外部文件中

时间:2013-02-09 20:45:42

标签: clojure

在我的Clojure计划开始时,我做了一个:

(def db-coords
    {:classname "org.postgresql.Driver"
     :subprotocol "postgresql"
     :subname (str "//" host ":" port "/" dbname) ;; host, port and dbname are defd above
     :user      "foo"
     :password  "bar"})

我想将这些值存储在类路径的外部文件(.clj或其他)中,然后从那里加载它们。显然,一种方法是使用 java.util.Properties ,但我怀疑在Clojure中有一种惯用的方式。

3 个答案:

答案 0 :(得分:5)

考虑将 spit slurp read-string 一起使用。

Clojure具有内置的序列化和反序列化其数据结构的能力。

要序列化到文件:

(spit "./coords.txt" db-coords)

以字符串形式加载文件并反序列化:

(read-string (slurp "./coords.txt"))

答案 1 :(得分:1)

clj-config是一个很好的库,它封装了spit,read-string api

https://github.com/Raynes/clj-config

答案 2 :(得分:0)

我已经创建了一个用于通过Clojure映射和JVM系统属性处理env特定配置区域的库:

https://github.com/bbbates/confijulate 这是我发现自己一遍又一遍地重复每个项目的模式。