我正在使用 Leiningen 和environ创建一个 clojure 项目,以保留一个用于管理项目或环境变量中的数据库连接的 uri profiles.clj
,我想尝试使用lein-flyway来管理数据库迁移。
Lein-flyway 有自己的配置来指定数据库 uri,我不想强迫我的同事将连接 uri 放在他们的配置中的两个位置。
目前,profiles.clj
未签入,看起来像这样:
{:profiles/dev
{:env {:database-url
"jdbc:postgresql://localhost/project?user=$USER&password=$PASS"}}
:profiles/test
{:env {:database-url
"jdbc:postgresql://localhost/project_test?user=$USER&password=$PASS"}}}
我想在我的:profiles/dev
地图profiles.clj
或我的:project/dev
地图中添加一个如下所示的条目project.clj
。
:flyway {:url ~(get-in profile-map [:profiles/dev :env :database-url])}
似乎我可以在我的 project.clj 中啜食profiles.clj 并在那里提取密钥,并将其插入到适当位置的项目映射中。那是最好的选择吗?有没有更简单的方法来重用这样的值?