Merge pull request #7099 from f1sherman/sweeper-clean-up-if-exception-raised
Clean up Sweeper controller accessor when an Error is raised
This commit is contained in:
commit
f3e4d2097d
@ -68,14 +68,14 @@ def before(controller)
|
||||
def after(controller)
|
||||
self.controller = controller
|
||||
callback(:after) if controller.perform_caching
|
||||
# Clean up, so that the controller can be collected after this request
|
||||
self.controller = nil
|
||||
end
|
||||
|
||||
def around(controller)
|
||||
before(controller)
|
||||
yield
|
||||
after(controller)
|
||||
ensure
|
||||
clean_up
|
||||
end
|
||||
|
||||
protected
|
||||
@ -90,6 +90,11 @@ def assigns(key)
|
||||
end
|
||||
|
||||
private
|
||||
def clean_up
|
||||
# Clean up, so that the controller can be collected after this request
|
||||
self.controller = nil
|
||||
end
|
||||
|
||||
def callback(timing)
|
||||
controller_callback_method_name = "#{timing}_#{controller.controller_name.underscore}"
|
||||
action_callback_method_name = "#{controller_callback_method_name}_#{controller.action_name}"
|
||||
|
@ -505,6 +505,10 @@ class SweeperTestController < ActionController::Base
|
||||
def show
|
||||
render :text => 'hello world'
|
||||
end
|
||||
|
||||
def error
|
||||
raise StandardError.new
|
||||
end
|
||||
end
|
||||
|
||||
class ImplicitActionsController < ActionController::Base
|
||||
@ -534,6 +538,13 @@ def test_sweeper_should_not_block_rendering
|
||||
assert_equal 'hello world', response.body
|
||||
end
|
||||
|
||||
def test_sweeper_should_clean_up_if_exception_is_raised
|
||||
assert_raise StandardError do
|
||||
test_process(SweeperTestController, 'error')
|
||||
end
|
||||
assert_nil AppSweeper.instance.controller
|
||||
end
|
||||
|
||||
def test_before_method_of_sweeper_should_always_return_true
|
||||
sweeper = ActionController::Caching::Sweeper.send(:new)
|
||||
assert sweeper.before(TestController.new)
|
||||
|
Loading…
Reference in New Issue
Block a user