自定义 rails 配置部分

Posted

技术标签:

【中文标题】自定义 rails 配置部分【英文标题】:Custom rails configuration section 【发布时间】:2013-09-17 02:09:08 【问题描述】:

为 Rails 应用程序创建自定义配置部分的最佳方法是什么?理想情况下,我希望最终结果是一个 api 调用,例如:

Rails.configuration.foo.bar
Rails.configuration.foo.baz

例如

Rails.configuration.***.api_key
Rails.configuration.***.api_secret

我会将 *** 配置存储在某个 .rb 文件(config/initializers?)中,我显然会在 Rails.configuration 中拥有其他类似命名空间的文件

【问题讨论】:

【参考方案1】:

你要找的是ActiveSupport::OrderedOptions。

rails 内部使用它来设置配置命名空间。它允许在config/application.rb 中做这样的事情:

module MyApp
  class Application < Rails::Application
    # ...
    config.foo = ActiveSupport::OrderedOptions.new 
    config.foo.bar = :bar
  end
end

然后您可以按通常的方式检索它:

Rails.configuration.foo.bar

如果您希望它是特定于环境的,您也可以在 config/environments/*.rb 而不是 config/application.rb 中使用它。

【讨论】:

【参考方案2】:

在 Rails 4 中使用 custom-configuration 更好。

$ Rails.configuration.x.class
# Rails::Application::Configuration::Custom < Object

Rails.application.configure do    
  # custom configuration section
  config.x.foo.bar = "foo.bar"
end

$ Rails.configuration.x.foo.bar
# "boo.bar"

【讨论】:

以上是关于自定义 rails 配置部分的主要内容,如果未能解决你的问题,请参考以下文章

为我的 Rails 应用程序创建自定义配置选项的最佳方式?

为我的 Rails 应用程序创建自定义配置选项的最佳方式?

Rails管理员 - 在“导出”部分中自定义关联的差异值

Ruby/Rails:您如何自定义 Devise 的邮件模板?

Ruby/Rails:您如何自定义 Devise 的邮件模板?

为我的Rails应用程序创建自定义配置选项的最佳方法?