级联/继承/共享Rails配置环境

cor*_*ard 19 configuration ruby-on-rails

我的登台和生产环境Rails配置是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
Run Code Online (Sandbox Code Playgroud)

有关创建不影响我的开发环境的共享配置的最佳方法的任何建议?

akh*_*bis 37

在我的项目中,我有3个类似生产的环境,所以我有一个名为shared_production.rb的文件config/environments,我在其中放置了通用配置

MyApp::Application.configure do
  config.cache_classes = true
  config.consider_all_requests_local = false
  #more shared configs
end
Run Code Online (Sandbox Code Playgroud)

然后在每个环境特定的配置文件(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
Run Code Online (Sandbox Code Playgroud)

  • DHH在http://signalvnoise.com/posts/3535-beyond-the-default-rails-environments中有类似的方法和更多细节 (4认同)