开发者

Appropriate way to handle settings in Rails3 Plugin?

I'm working o开发者_StackOverflow社区n a plugin for Rails3. I'd like to allow users to override some settings. At the moment I'm doing this inside my plugin's Rails::Engine class like:

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

This seems like the wrong way to handle this. Is there a better method or convention most plugins use in Rails3?


I recommend that people create a new settings namespace for their settings in their 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

Then, the user can set your plugin's config or override defaults in their Application class. This is the pattern Rails uses in our internal Railties.

Like Paul said, you could make it even easier by creating a generator that dumps an initializer with all the possible config settings commented out for their use.


There are a couple common ways to specify configuration settings in a rails plugin.

I prefer to have an initializer file that contains the plugin settings. This file can be created with the default settings by adding a generator to your plugin. Then the user can run the generator and easily see all the plugin settings in one file.

Checkout the client_side_validations for an example

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜