2016-11-21 2 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"]]}}) 

Однако если создать файл WAR с lein ring uberwar (даже с with-profile dev) и развернуть его на Tomcat я буду получать db-user, как nil (вызывается с (env :db-user). Однако lein ring server правильно использует профиль dev, так что он работает. Есть ли что-то не так, я делаю? Или environ не должен использоваться таким образом?

ответ

1

Эта причина не работает так, как вы ожидаете, потому что вы устанавливаете эти переменные только тогда, Профиль активен. После того, как вы создали WAR-файл и depl oyed это, лейн больше не находится на картинке. Вам придется загружать эти переменные по-другому. Если вы хотите придерживаться среды, эти два параметра выглядят как свойства системы Java или переменные среды.

+0

Это то, чего я боялся :) Большое спасибо –

+0

Кстати, вы знаете какую-либо хорошую альтернативу Environ, которая способна это сделать? –

+0

Возможно это? https://github.com/yogthos/config – Jeremy

Смежные вопросы