我对配置文件和环境变量的使用有疑问。是否可以使用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
(使用{{1调用)但是(env :db-user)
正确地使用了lein ring server
个人资料,所以它可以正常工作。我有什么问题吗?或者dev
不应该以这种方式使用?
答案 0 :(得分:2)
这是因为它无法正常工作,因为您只在配置文件处于活动状态时设置这些变量。一旦构建了WAR文件并进行了部署,lein就不再适用了。您需要以不同的方式加载这些变量。如果你想坚持使用environ,这两个选项似乎是Java系统属性或环境变量。