在配置文件中正确使用Environ库

时间:2016-11-21 19:03:18

标签: clojure build leiningen ring environ

我对配置文件和环境变量的使用有疑问。是否可以使用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不应该以这种方式使用?

1 个答案:

答案 0 :(得分:2)

这是因为它无法正常工作,因为您只在配置文件处于活动状态时设置这些变量。一旦构建了WAR文件并进行了部署,lein就不再适用了。您需要以不同的方式加载这些变量。如果你想坚持使用environ,这两个选项似乎是Java系统属性或环境变量。