我正在为 Rails3 开发一个插件。我想允许用户覆盖某些设置。目前我正在我的插件的 Rails::Engine 类中这样做:
config.my_setting = :default_value unless config.respond_to? :my_setting
这似乎是错误的处理方式。大多数插件在 Rails3 中使用的是否有更好的方法或约定?
最佳答案
我建议人们在他们的 Railtie 中为他们的设置创建一个新的设置命名空间:
module MyPlugin
class Railtie < Rails::Railtie
config.my_plugin = ActiveSupport::OrderedHash.new
config.my_plugin.some_default = true
config.my_plugin.some_other_default = false
initializer "my_plugin.initialize" do |app|
app.config.my_plugin # the settings, possibly augmented by the user
end
end
end
然后,用户可以在他们的 Application 类中设置插件的配置或覆盖默认值。这是 Rails 在我们的内部 Railties 中使用的模式。
正如 Paul 所说,您可以通过创建一个转储初始化程序的生成器来使它变得更容易,并注释掉所有可能的配置设置以供使用。
关于ruby-on-rails - 处理 Rails3 插件中设置的适当方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3407835/