From fa6c8ab321fd0c62f6c7b55523045bf849d2578f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Sat, 16 Apr 2011 13:30:15 +0200 Subject: [PATCH] Use inflector to avoid conflicts. --- lib/devise.rb | 3 ++- lib/devise/failure_app.rb | 4 +++- lib/devise/omniauth.rb | 5 +++-- lib/devise/rails/warden_compat.rb | 2 +- lib/devise/strategies/authenticatable.rb | 3 ++- test/devise_test.rb | 3 --- 6 files changed, 11 insertions(+), 9 deletions(-) diff --git a/lib/devise.rb b/lib/devise.rb index 7790a8b5..c3bcdc9f 100644 --- a/lib/devise.rb +++ b/lib/devise.rb @@ -317,7 +317,8 @@ module Devise if options[:model] path = (options[:model] == true ? "devise/models/#{module_name}" : options[:model]) - Devise::Models.send(:autoload, module_name.to_s.camelize.to_sym, path) + camelized = ActiveSupport::Inflector.camelize(module_name.to_s) + Devise::Models.send(:autoload, camelized.to_sym, path) end Devise::Mapping.add_module module_name diff --git a/lib/devise/failure_app.rb b/lib/devise/failure_app.rb index 553dccee..7f60ed65 100644 --- a/lib/devise/failure_app.rb +++ b/lib/devise/failure_app.rb @@ -101,7 +101,9 @@ module Devise def recall_app(app) controller, action = app.split("#") - "#{controller.camelize}Controller".constantize.action(action) + controller_name = ActiveSupport::Inflector.camelize(controller) + controller_klass = ActiveSupport::Inflector.constantize("#{controller_name}Controller") + controller_klass.action(action) end def warden diff --git a/lib/devise/omniauth.rb b/lib/devise/omniauth.rb index 07659fc3..612f016b 100644 --- a/lib/devise/omniauth.rb +++ b/lib/devise/omniauth.rb @@ -14,8 +14,9 @@ OmniAuth.config.path_prefix = nil OmniAuth.config.on_failure = Proc.new do |env| env['devise.mapping'] = Devise::Mapping.find_by_path!(env['PATH_INFO'], :path) - controller_klass = "#{env['devise.mapping'].controllers[:omniauth_callbacks].camelize}Controller" - controller_klass.constantize.action(:failure).call(env) + controller_name = ActiveSupport::Inflector.camelize(env['devise.mapping'].controllers[:omniauth_callbacks]) + controller_klass = ActiveSupport::Inflector.constantize("#{controller_name}Controller") + controller_klass.action(:failure).call(env) end module Devise diff --git a/lib/devise/rails/warden_compat.rb b/lib/devise/rails/warden_compat.rb index e2f6208f..82041b3e 100644 --- a/lib/devise/rails/warden_compat.rb +++ b/lib/devise/rails/warden_compat.rb @@ -28,7 +28,7 @@ class Warden::SessionSerializer klass, id, salt = keys begin - record = klass.constantize.to_adapter.get(id) + record = ActiveSupport::Inflector.constantize(klass).to_adapter.get(id) record if record && record.authenticatable_salt == salt rescue NameError => e if e.message =~ /uninitialized constant/ diff --git a/lib/devise/strategies/authenticatable.rb b/lib/devise/strategies/authenticatable.rb index d9f0faf1..e25f6320 100644 --- a/lib/devise/strategies/authenticatable.rb +++ b/lib/devise/strategies/authenticatable.rb @@ -157,7 +157,8 @@ module Devise # becomes simply :database. def authenticatable_name @authenticatable_name ||= - self.class.name.split("::").last.underscore.sub("_authenticatable", "").to_sym + ActiveSupport::Inflector.underscore(self.class.name.split("::").last). + sub("_authenticatable", "").to_sym end end end diff --git a/test/devise_test.rb b/test/devise_test.rb index f2e3da93..8c6acaa5 100644 --- a/test/devise_test.rb +++ b/test/devise_test.rb @@ -58,9 +58,6 @@ class DeviseTest < ActiveSupport::TestCase assert_equal :fruits, Devise::CONTROLLERS[:kivi] Devise::ALL.delete(:kivi) Devise::CONTROLLERS.delete(:kivi) - - assert_nothing_raised(Exception) { Devise.add_module(:authenticatable_again, :model => 'devise/model/authenticatable') } - assert defined?(Devise::Models::AuthenticatableAgain) end test 'should complain when comparing empty or different sized passes' do