2

我对配置文件和环境变量的使用有疑问。environ是否可以根据设置的配置文件导出变量?这是我尝试过的(部分project.clj

  :env {:time-to-wait-for-response "72" ; in hours
        :crm-address "https://app.onepagecrm.com/api/v3/"}
:profiles
  {:uberjar {:omit-source true
             :aot :all}
   :uberwar {:omit-source true
             :aot :all}
   :prod {:ring {:open-browser? false 
                 :stacktraces? false 
                 :auto-reload? false}
         {:env {:prod? true
                :db-user "mailer"
                :db-password "" }}
   :dev  {:env {:db-user "mailer" 
                :db-password ""}

          :dependencies [[ring-mock "0.1.5"]
                        [ring/ring-devel "1.3.1"]
                        [midje "1.6.3"]]
          :ring {:open-browser? false}
          :plugins [[lein-midje "3.2.1"]]}})

lein ring uberwar但是,如果我使用(甚至使用)构建 WAR 文件with-profile dev并将其部署到 Tomcat,我将得到db-user(使用nil调用(env :db-user)。但是lein ring server正确使用dev配置文件,因此它可以工作。我做错了什么吗?或者environ不应该以这种方式使用?

4

1 回答 1

2

它无法按预期工作的原因是您仅在配置文件处于活动状态时才设置这些变量。一旦您构建了一个 WAR 文件并部署了它,lein 就不再出现在图片中。您需要以不同的方式加载这些变量。如果您想坚持使用 environ,这两个选项似乎是 Java 系统属性或环境变量。

于 2016-11-22T05:29:35.033 回答