diff options
Diffstat (limited to 'activesupport')
-rw-r--r-- | activesupport/lib/active_support/lazy_load_hooks.rb | 6 | ||||
-rw-r--r-- | activesupport/test/lazy_load_hooks_test.rb | 13 |
2 files changed, 12 insertions, 7 deletions
diff --git a/activesupport/lib/active_support/lazy_load_hooks.rb b/activesupport/lib/active_support/lazy_load_hooks.rb index c124416595..dc8080c469 100644 --- a/activesupport/lib/active_support/lazy_load_hooks.rb +++ b/activesupport/lib/active_support/lazy_load_hooks.rb @@ -40,7 +40,7 @@ module ActiveSupport # * <tt>:run_once</tt> - Given +block+ will run only once. def on_load(name, options = {}, &block) @loaded[name].each do |base| - execute_hook(base, options, block) + execute_hook(name, base, options, block) end @load_hooks[name] << [block, options] @@ -49,7 +49,7 @@ module ActiveSupport def run_load_hooks(name, base = Object) @loaded[name] << base @load_hooks[name].each do |hook, options| - execute_hook(base, options, hook) + execute_hook(name, base, options, hook) end end @@ -63,7 +63,7 @@ module ActiveSupport end end - def execute_hook(base, options, block) + def execute_hook(name, base, options, block) with_execution_control(name, block, options[:run_once]) do if options[:yield] block.call(base) diff --git a/activesupport/test/lazy_load_hooks_test.rb b/activesupport/test/lazy_load_hooks_test.rb index c161005100..721d44d0c1 100644 --- a/activesupport/test/lazy_load_hooks_test.rb +++ b/activesupport/test/lazy_load_hooks_test.rb @@ -22,14 +22,19 @@ class LazyLoadHooksTest < ActiveSupport::TestCase def test_basic_hook_with_two_registrations_only_once i = 0 - ActiveSupport.on_load(:basic_hook_with_two_once, run_once: true) do + block = proc { i += incr } + ActiveSupport.on_load(:basic_hook_with_two_once, run_once: true, &block) + ActiveSupport.on_load(:basic_hook_with_two_once) do i += incr end - assert_equal 0, i - ActiveSupport.run_load_hooks(:basic_hook_with_two_once, FakeContext.new(2)) + + ActiveSupport.on_load(:different_hook, run_once: true, &block) + ActiveSupport.run_load_hooks(:different_hook, FakeContext.new(2)) assert_equal 2, i + ActiveSupport.run_load_hooks(:basic_hook_with_two_once, FakeContext.new(2)) + assert_equal 6, i ActiveSupport.run_load_hooks(:basic_hook_with_two_once, FakeContext.new(5)) - assert_equal 2, i + assert_equal 11, i end def test_hook_registered_after_run |