在Rails3插件中处理设置的适当方法?

时间:2010-08-04 16:52:58

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-plugins

我正在为Rails3制作一个插件。我想允许用户覆盖一些设置。目前我在我的插件的Rails :: Engine类中执行此操作,如:

config.my_setting = :default_value unless config.respond_to? :my_setting

这似乎是处理此问题的错误方法。大多数插件在Rails3中使用是否有更好的方法或约定?

2 个答案:

答案 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以获取示例

相关问题