module Devise::Controllers::UrlHelpers

def self.generate_helpers!(routes = nil)

def self.generate_helpers!(routes = nil)
  routes ||= begin
    mappings = Devise.mappings.values.map(&:used_helpers).flatten.uniq
    Devise::URL_HELPERS.slice(*mappings)
  end
  routes.each do |module_name, actions|
    [:path, :url].each do |path_or_url|
      actions.each do |action|
        action = action ? "#{action}_" : ""
        method = :"#{action}#{module_name}_#{path_or_url}"
        define_method method do |resource_or_scope, *args|
          scope = Devise::Mapping.find_scope!(resource_or_scope)
          router_name = Devise.mappings[scope].router_name
          context = router_name ? send(router_name) : _devise_route_context
          context.send("#{action}#{scope}_#{module_name}_#{path_or_url}", *args)
        end
      end
    end
  end
end

def self.remove_helpers!

def self.remove_helpers!
  self.instance_methods.map(&:to_s).grep(/_(url|path)$/).each do |method|
    remove_method method
  end
end

def _devise_route_context

def _devise_route_context
  @_devise_route_context ||= send(Devise.available_router_name)
end