首页 > 解决方案 > lein test with-profile 无法覆盖测试配置文件的 env 值

问题描述

我正在做一些 Clojure 宠物项目。我有一些配置文件,如下所示

{:test   {:env {:database-name     "library_test",
                :host-name         "192.168.33.10"
                :username          "library_admin"
                :password          ""
                :dbtype            "postgres"
                :driver-class-name "org.postgresql.Driver"}},
 :dev    {:env {:database-name     "library",
                :host-name         "192.168.33.10"
                :username          "library_admin"
                :password          ""
                :dbtype            "postgres"
                :driver-class-name "org.postgresql.Driver"}},
 :travis {:env {:database-name     "test_library_test",
                :host-name         "localhost"
                :username          "test_user"
                :password          "password"
                :dbtype            "postgres"
                :driver-class-name "org.postgresql.Driver"}}}

现在我正在尝试为该项目设置 Travis-CI。我想在运行测试时覆盖测试配置文件 CI 的值,为此我使用以下命令

lein with-profile travis 测试

这里 lein 正在激活travis配置文件,但它从测试配置文件而不是travis配置文件中获取环境变量值。

有没有人遇到过这样的问题?

标签: clojureleiningenclojure.test

解决方案


原因:Lein默认合并test配置文件。您可以看到有效的项目图lein with-profile travis,test pprint

解决方案:我假设您正在使用environ或类似的东西。如果是这样,您可以使用env in UPCASE_WITH_UNDERSCORE(eg )导出值,DATABASE_NAME=test_library_test它们将覆盖配置文件中的值


推荐阅读