在这个简单的演示项目上工作,我从我自己的“配置管理”开始。基本上,将 .edn 文件slurp成一个字符串,然后将其edn/read-string成一个映射。它工作得很好,但后来我进行了集成测试,这需要不同的配置文件。所以我搜索并找到了这个 yogthos/config 东西,它似乎正是为此而制作的。
快速测试,它似乎在做我想要的。在连接到 REPL 服务器的 Emacs 中进行评估,我可以评估感兴趣的配置值。
(println "HERE IT IS!!: " (:kafka-broker env))
(def p (producer (:kafka-broker env)))
当我编译文件时,它会打印带有配置值的消息。但是,当我运行lein with-profile dev uberjar时,它会在那里死掉,但有一个例外,
Caused by: java.lang.IllegalArgumentException: requirement failed: Missing required property 'metadata.broker.list'
at scala.Predef$.require(Predef.scala:233)
,并且为此添加的我的 println 证实了怀疑:
HERE IT IS!!: nil
但是..但是...我确实给了它with-profile dev ..?
lein with-profile dev pprint 输出看起来不错,但我可能不知道要查找什么:
...
:resource-paths
("/Users/akarpov/repos/coras/config/dev"
"/Users/akarpov/repos/coras/resources"),
...
最后,这是来自我的 project.clj:
...
:profiles {:prod {:resource-paths ["config/prod"]}
:dev {:resource-paths ["config/dev"]}
:uberjar {:aot :all}}
...