Подходящий способ обработки настроек в Rails3 Plugin? - PullRequest
1 голос
/ 04 августа 2010

Я работаю над плагином для Rails3. Я хочу разрешить пользователям переопределять некоторые настройки. На данный момент я делаю это в классе Rails :: Engine моего плагина как:

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

Это кажется неправильным способом справиться с этим. Есть ли лучший метод или соглашение, которое большинство плагинов используют в Rails3?

Ответы [ 2 ]

5 голосов
/ 10 декабря 2011

Я рекомендую людям создать новое пространство имен настроек для своих настроек в 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.

Как сказал Пол, вы можете сделать это еще проще, создав генератор, который выводит инициализатор со всеми возможными параметрами конфигурации, закомментированными для их использования.

0 голосов
/ 07 марта 2011

Существует несколько распространенных способов задания настроек конфигурации в плагине rails.

Я предпочитаю иметь файл инициализатора, который содержит настройки плагина.Этот файл может быть создан с настройками по умолчанию, добавив генератор к вашему плагину.Затем пользователь может запустить генератор и легко увидеть все настройки плагина в одном файле.

Оформить client_side_validations для примера

...