Переменные конфигурации доступны в файле среды 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']