From 27a83f3dd310c85119de239ac9a50c8953fc5abe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Wed, 15 Feb 2012 17:13:55 +0100 Subject: [PATCH] Ensure Devise.available_router_name is never nil, closes #1648 --- lib/devise.rb | 4 ++++ lib/devise/controllers/url_helpers.rb | 2 +- lib/devise/failure_app.rb | 2 +- lib/devise/rails/routes.rb | 6 +++--- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/lib/devise.rb b/lib/devise.rb index 882e6d28..f2d4e27b 100644 --- a/lib/devise.rb +++ b/lib/devise.rb @@ -299,6 +299,10 @@ module Devise end end + def self.available_router_name + router_name || :main_app + end + def self.omniauth_providers omniauth_configs.keys end diff --git a/lib/devise/controllers/url_helpers.rb b/lib/devise/controllers/url_helpers.rb index 1496c0c9..480687f5 100644 --- a/lib/devise/controllers/url_helpers.rb +++ b/lib/devise/controllers/url_helpers.rb @@ -60,7 +60,7 @@ module Devise private def _devise_route_context - @_devise_route_context ||= send(Devise.router_name) + @_devise_route_context ||= send(Devise.available_router_name) end end end diff --git a/lib/devise/failure_app.rb b/lib/devise/failure_app.rb index 18e08205..7fd95cad 100644 --- a/lib/devise/failure_app.rb +++ b/lib/devise/failure_app.rb @@ -89,7 +89,7 @@ module Devise route = :"new_#{scope}_session_path" opts[:format] = request_format unless skip_format? - context = send(Devise.router_name) + context = send(Devise.available_router_name) if context.respond_to?(route) context.send(route, opts) diff --git a/lib/devise/rails/routes.rb b/lib/devise/rails/routes.rb index e79cba30..503d43a1 100644 --- a/lib/devise/rails/routes.rb +++ b/lib/devise/rails/routes.rb @@ -9,13 +9,13 @@ module ActionDispatch::Routing @devise_finalized ||= begin if Devise.router_name.nil? && self != Rails.application.try(:routes) - warn "[Devise] We have detected that you are using devise_for inside engine routes. " \ + warn "[DEVISE] We have detected that you are using devise_for inside engine routes. " \ "In this case, you probably want to set Devise.router_name = MOUNT_POINT, where " \ "MOUNT_POINT is a symbol representing where this engine will be mounted at. For " \ - "now, Devise will default the mount point to :main_app." + "now Devise will default the mount point to :main_app. You can explicitly set it" \ + " to :main_app as well in case you want to keep the current behavior." end - Devise.router_name ||= :main_app Devise.configure_warden! Devise.regenerate_helpers! true