2016-11-21 29 views
0

我對配置文件和環境變量的使用有疑問。根據設置的配置文件,是否可以使用environ導出變量?這是我曾嘗試(部分project.clj正確使用配置文件中的Environ庫

: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(即使with-profile dev)WAR文件並部署到Tomcat我會正確地得到db-usernil(調用(env :db-user)。但是lein ring server使用dev配置文件,所以它的工作原理是否有錯我正在做?或environ是不應該這樣使用?

回答

1

這個原因,它不工作,因爲你期望是因爲你只是設置這些變量時,配置文件處於活動狀態一旦建立了WAR文件和depl oyed它,lein不再在圖片中。您需要以不同的方式加載這些變量。如果你想堅持使用environ,這兩個選項似乎是Java系統屬性或環境變量。

+0

這就是我所害怕的:)非常感謝 –

+0

Btw你知道任何可以替代Environ的選擇嗎? –

+0

也許這樣? https://github.com/yogthos/config – Jeremy

相關問題