Cache failure_app action builder and pipe call through delegator.

This commit is contained in:
José Valim 2011-11-07 08:47:28 -02:00
parent f67793cb0d
commit 4629beecd7
4 changed files with 15 additions and 6 deletions

View File

@ -6,10 +6,11 @@ require 'set'
require 'securerandom'
module Devise
autoload :FailureApp, 'devise/failure_app'
autoload :OmniAuth, 'devise/omniauth'
autoload :Delegator, 'devise/delegator'
autoload :FailureApp, 'devise/failure_app'
autoload :OmniAuth, 'devise/omniauth'
autoload :PathChecker, 'devise/path_checker'
autoload :Schema, 'devise/schema'
autoload :Schema, 'devise/schema'
autoload :TestHelpers, 'devise/test_helpers'
module Controllers
@ -407,7 +408,7 @@ module Devise
# block.
def self.configure_warden! #:nodoc:
@@warden_configured ||= begin
warden_config.failure_app = Devise::FailureApp
warden_config.failure_app = Devise::Delegator.new
warden_config.default_scope = Devise.default_scope
warden_config.intercept_401 = false

7
lib/devise/delegator.rb Normal file
View File

@ -0,0 +1,7 @@
module Devise
class Delegator
def call(env)
Devise::FailureApp.call(env)
end
end
end

View File

@ -15,7 +15,8 @@ module Devise
delegate :flash, :to => :request
def self.call(env)
action(:respond).call(env)
@respond ||= action(:respond)
@respond.call(env)
end
def self.default_url_options(*args)

View File

@ -25,7 +25,7 @@ class DeviseTest < ActiveSupport::TestCase
end
test 'stores warden configuration' do
assert_equal Devise::FailureApp, Devise.warden_config.failure_app
assert_kind_of Devise::Delegator, Devise.warden_config.failure_app
assert_equal :user, Devise.warden_config.default_scope
end