16

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

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

例如

Rails.configuration.stackoverflow.api_key
Rails.configuration.stackoverflow.api_secret

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

4

2 回答 2

28

您正在寻找的是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.

于 2013-09-12T15:50:44.510 回答
2

在 Rails 4 中使用自定义配置更好。

$ 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"
于 2016-07-19T03:54:42.727 回答