ruby-on-rails - 处理 Rails3 插件中设置的适当方法?

标签 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 中使用的是否有更好的方法或约定?

最佳答案

我建议人们在他们的 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/

相关文章:

ruby - 是 &method( :method_name) idiom bad for performance in Ruby?

ajax - Rails 3.1 全选复选框

ruby - 为 Capistrano 定义自定义方法?

ruby-on-rails-3 - 设计可邀请的节目邀请人姓名或电子邮件

ruby-on-rails - 尝试验证日期

ruby-on-rails - 如何在 Rails 中创建自定义方法?

ruby-on-rails - 双控制台输出?

ruby-on-rails - 每次 rake 任务运行后都会删除 Rails.cache

ruby-on-rails - Rails 中未定义的列多对多

ruby - 每个关联模型的 Rails 3 ActiveRecord 模型总和