mirror of
https://github.com/github/rails.git
synced 2026-04-26 03:00:59 -04:00
Add clear_helpers as a way to clean up all helpers added to this controller, maintaing just the helper with the same name as the controller.
This commit is contained in:
@@ -95,6 +95,13 @@ module AbstractController
|
||||
_helpers.module_eval(&block) if block_given?
|
||||
end
|
||||
|
||||
# Clears up all existing helpers in this class, only keeping the helper
|
||||
# with the same name as this class.
|
||||
def clear_helpers
|
||||
self._helpers = Module.new
|
||||
default_helper_module! unless anonymous?
|
||||
end
|
||||
|
||||
private
|
||||
# Makes all the (instance) methods in the helper module available to templates
|
||||
# rendered through this controller.
|
||||
|
||||
@@ -38,6 +38,10 @@ module AbstractController
|
||||
end
|
||||
end
|
||||
|
||||
class ::HelperyTestController < AbstractHelpers
|
||||
clear_helpers
|
||||
end
|
||||
|
||||
class AbstractHelpersBlock < ControllerWithHelpers
|
||||
helper do
|
||||
include ::AbstractController::Testing::HelperyTest
|
||||
@@ -45,7 +49,6 @@ module AbstractController
|
||||
end
|
||||
|
||||
class TestHelpers < ActiveSupport::TestCase
|
||||
|
||||
def setup
|
||||
@controller = AbstractHelpers.new
|
||||
end
|
||||
@@ -74,8 +77,22 @@ module AbstractController
|
||||
@controller.process(:with_module)
|
||||
assert_equal "Module Included", @controller.response_body
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
class ClearHelpersTest < ActiveSupport::TestCase
|
||||
def setup
|
||||
@controller = HelperyTestController.new
|
||||
end
|
||||
|
||||
def test_clears_up_previous_helpers
|
||||
@controller.process(:with_symbol)
|
||||
assert_equal "I respond to bare_a: false", @controller.response_body
|
||||
end
|
||||
|
||||
def test_includes_controller_default_helper
|
||||
@controller.process(:with_block)
|
||||
assert_equal "Hello Default", @controller.response_body
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
5
actionpack/test/fixtures/helpers/helpery_test_helper.rb
vendored
Normal file
5
actionpack/test/fixtures/helpers/helpery_test_helper.rb
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
module HelperyTestHelper
|
||||
def helpery_test
|
||||
"Default"
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user