Переменные конфигурации доступны в файле среды rails - PullRequest
3 голосов
/ 13 февраля 2012

В настоящее время я использую инициализатор для загрузки файла config.yml в хэш AppConfig, который предлагает доступ к переменным для среды.Для производства я использую переменные среды, установленные на сервере.Я использую следующий код для отката к переменной config, если переменные окружения не заданы (т.е. в процессе разработки и тестирования).

ENV['FACEBOOK_API_KEY'] || AppConfig['facebook_api_key']

Моя проблема заключается в том, что мне нужны некоторые из этих переменных, чтобы они были доступны вспецифичный для среды файл (development.rb / production.rb и т. д.), но этот файл загружается перед инициализаторами.Как мне с этим бороться?

Ответы [ 2 ]

8 голосов
/ 13 февраля 2012

Посмотрите руководство по Rails для События инициализации конфигурации . Есть события, которые вы можете подключить при выполнении такого рода конфигурации.

Короче говоря, вы можете выполнить настройку среды после инициализации с помощью:

#config/environments/development.rb
YourApp::Application.configure do
  config.after_initialize do
    #do some configuration after all initialisers have run
  end
end
0 голосов
/ 13 февраля 2012

Если есть способ создать двухуровневую структуру, такую ​​как database.yml, вы всегда можете определить отдельные конфигурации для каждой среды в одном и том же файле, а затем обратиться к соответствующей версии:

ENV['FACEBOOK_API_KEY'] || AppConfig[Rails.env] && AppConfig[Rails.env]['facebook_api_key']
...