我正在为Rails3制作一个插件。我想允许用户覆盖一些设置。目前我在我的插件的Rails :: Engine类中执行此操作,如:
config.my_setting = :default_value unless config.respond_to? :my_setting
这似乎是处理此问题的错误方法。大多数插件在Rails3中使用是否有更好的方法或约定?
答案 0 :(得分:5)
我建议人们在他们的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说的那样,你可以通过创建一个转储初始化程序的生成器来使其变得更容易,该初始化程序将所有可能的配置设置注释掉以供其使用。
答案 1 :(得分:0)
在rails插件中指定配置设置有几种常用方法。
我更喜欢拥有包含插件设置的初始化文件。通过向插件添加生成器,可以使用默认设置创建此文件。然后,用户可以运行生成器并轻松地在一个文件中查看所有插件设置。
查看client_side_validations以获取示例