Seção de configuração de rails personalizados

Qual é a melhor maneira de criar uma seção de configuração personalizada para um aplicativo rails? Idealmente, gostaria que o resultado final fosse uma chamada de API como:

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

por exemplo

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

e eu armazenaria a configuração stackoverflow em algum arquivo .rb (config / initializers?) e obviamente teria outros que são similarmente namespaces dentro do Rails.configuration

O que você está procurando é ActiveSupport :: OrderedOptions .

Ele é usado por rails internamente para definir o namespace de configuração. Ele permite fazer algo parecido com isto, em config/application.rb :

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

Você pode então recuperá-lo da maneira usual:

 Rails.configuration.foo.bar 

Se você quer que isso seja específico do ambiente, você também pode usá-lo em config/environments/*.rb ao invés de config/application.rb .

No Rails 4, o uso de configuração personalizada é melhor.

 $ 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"