module Devise
def self.add_module(module_name, options = {})
Devise.add_module(:party_module, insert_at: 0)
Devise.add_module(:party_module, model: 'party_module/model')
Devise.add_module(:party_module, strategy: true, controller: :sessions)
Devise.add_module(:party_module)
== Examples:
name.
All values, except :model, accept also a boolean and will have the same name as the given module
+insert_at+ - Integer representing the order in which this module's model will be included
+strategy+ - Symbol representing if this module got a custom *strategy*.
+route+ - Symbol representing the named *route* helper for this module.
+controller+ - Symbol representing the name of an existing or custom *controller* for this module.
+model+ - String representing the load path to a custom *model* for this module (to autoload.)
== Options:
in the model class definition.
process. That requires that the module be listed in the arguments passed to the 'devise' method
Note that adding a module using this method does not cause it to be used in the authentication
called from lib/devise/modules.rb. Third-party modules need to be added explicitly using this method.
Register available devise modules. For the standard modules that Devise provides, this method is
def self.add_module(module_name, options = {}) options.assert_valid_keys(:strategy, :model, :controller, :route, :no_input, :insert_at) ALL.insert (options[:insert_at] || -1), module_name if strategy = options[:strategy] strategy = (strategy == true ? module_name : strategy) STRATEGIES[module_name] = strategy end if controller = options[:controller] controller = (controller == true ? module_name : controller) CONTROLLERS[module_name] = controller end NO_INPUT << strategy if options[:no_input] if route = options[:route] case route when TrueClass key, value = module_name, [] when Symbol key, value = route, [] when Hash key, value = route.keys.first, route.values.flatten else raise ArgumentError, ":route should be true, a Symbol or a Hash" end URL_HELPERS[key] ||= [] URL_HELPERS[key].concat(value) URL_HELPERS[key].uniq! ROUTES[module_name] = key end if options[:model] path = (options[:model] == true ? "devise/models/#{module_name}" : options[:model]) camelized = ActiveSupport::Inflector.camelize(module_name.to_s) Devise::Models.send(:autoload, camelized.to_sym, path) end Devise::Mapping.add_module module_name end