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

Posted

技术标签:

【中文标题】级联/继承/共享 Rails 配置环境【英文标题】:Cascading/Inherited/Shared Rails configuration environments 【发布时间】:2013-08-14 04:12:12 【问题描述】:

我的暂存环境和生产环境 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

关于创建不会影响我的开发环境的共享配置的最佳方法有什么建议吗?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

DHH 也有类似的方法,在signalvnoise.com/posts/…中有更多细节

以上是关于级联/继承/共享 Rails 配置环境的主要内容,如果未能解决你的问题,请参考以下文章

Rails:在生产环境中配置记录器以使用 Papertrail

在测试环境中为 Mandrill 配置 rails 应用程序

如何使用 i18n 和 rails 配置语言环境别名?

Ruby on rails配置环境问题慢慢添加

为 Rails 加载配置文件的顺序是啥?

Ruby on Rails全栈课程5.2 项目上线--在云服务器上配置Ruby On Rails环境