Переменные конфигурации доступны в файле среды rails

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

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

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

2 ответа

Решение

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

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

#config/environments/development.rb
YourApp::Application.configure do
  config.after_initialize do
    #do some configuration after all initialisers have run
  end
end

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

ENV['FACEBOOK_API_KEY'] || AppConfig[Rails.env] && AppConfig[Rails.env]['facebook_api_key']
Другие вопросы по тегам