jde*_*eno 1 ruby ruby-on-rails ruby-on-rails-plugins ruby-on-rails-3
我正在为Rails3制作一个插件.我想允许用户覆盖一些设置.目前我在我的插件的Rails :: Engine类中执行此操作,如:
config.my_setting = :default_value unless config.respond_to? :my_setting
Run Code Online (Sandbox Code Playgroud)
这似乎是处理这个问题的错误方法.大多数插件在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
Run Code Online (Sandbox Code Playgroud)
然后,用户可以设置插件的配置或覆盖其Application类中的默认值.这是Rails在我们内部的Railties中使用的模式.
就像保罗所说的那样,你可以通过创建一个转储初始化器的生成器来使它变得更加容易,该初始化器具有为其使用而注释掉的所有可能的配置设置.
| 归档时间: |
|
| 查看次数: |
706 次 |
| 最近记录: |