Конфигурация пользовательских рельсов
Какой лучший способ создать пользовательский раздел конфигурации для приложения 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
Ответы
Ответ 1
То, что вы ищете, это ActiveSupport:: OrderedOptions.
Он используется рельсами внутри для установки пространства имен config. Это позволяет сделать что-то вроде этого, в 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"