Каскадные/Наследуемые/Общие среды конфигурации Rails

Моя конфигурация Rages и производственной среды на 99% одинакова с несколькими вещами, установленными по-разному (например, уровень журнала), и я действительно хотел бы устранить дублирование между двумя файлами среды.

Например, у меня есть что-то вроде этого:

# config/environments/staging.rb
MyApp::Application.configure do
  config.cache_classes = true
  config.static_cache_control = "public, max-age=31536000"
  config.log_level = :debug
  # ...
end

# config/environments/production.rb
MyApp::Application.configure do
  config.cache_classes = true
  config.static_cache_control = "public, max-age=31536000"
  config.log_level = :info
  # ...
end

Любые рекомендации по наилучшему способу создания общей конфигурации, которая также не влияет на мою среду разработки?

Ответ 1

В моих проектах у меня есть 3 производственные среды, поэтому у меня есть файл shared_production.rb в config/environments где я помещаю общую конфигурацию

MyApp::Application.configure do
  config.cache_classes = true
  config.consider_all_requests_local = false
  #more shared configs
end

И затем в каждой среде настраивается файл конфигурации (production.rb, staging.rb, testing.rb), я делаю

require File.expand_path('../shared_production', __FILE__)
MyApp::Application.configure do
  config.log_level = :debug
  #more environment specific configs
end