提交 f3e4d209 编写于 作者: R Rafael Mendonça França

Merge pull request #7099 from f1sherman/sweeper-clean-up-if-exception-raised

Clean up Sweeper controller accessor when an Error is raised
......@@ -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)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册