Skip to content

Commit c9b080d

Browse files
committed
Merge pull request rails#25790 from mrageh/wrap-lazy-load-hooks-in-module
Wrap module around lazy load hooks
1 parent fbdc8e9 commit c9b080d

File tree

1 file changed

+26
-18
lines changed

1 file changed

+26
-18
lines changed

activesupport/lib/active_support/lazy_load_hooks.rb

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -20,29 +20,37 @@ module ActiveSupport
2020
# +activerecord/lib/active_record/base.rb+ is:
2121
#
2222
# ActiveSupport.run_load_hooks(:active_record, ActiveRecord::Base)
23-
@load_hooks = Hash.new { |h,k| h[k] = [] }
24-
@loaded = Hash.new { |h,k| h[k] = [] }
25-
26-
def self.on_load(name, options = {}, &block)
27-
@loaded[name].each do |base|
28-
execute_hook(base, options, block)
23+
module LazyLoadHooks
24+
def self.extended(base) # :nodoc:
25+
base.class_eval do
26+
@load_hooks = Hash.new { |h,k| h[k] = [] }
27+
@loaded = Hash.new { |h,k| h[k] = [] }
28+
end
2929
end
3030

31-
@load_hooks[name] << [block, options]
32-
end
31+
def on_load(name, options = {}, &block)
32+
@loaded[name].each do |base|
33+
execute_hook(base, options, block)
34+
end
3335

34-
def self.execute_hook(base, options, block)
35-
if options[:yield]
36-
block.call(base)
37-
else
38-
base.instance_eval(&block)
36+
@load_hooks[name] << [block, options]
3937
end
40-
end
4138

42-
def self.run_load_hooks(name, base = Object)
43-
@loaded[name] << base
44-
@load_hooks[name].each do |hook, options|
45-
execute_hook(base, options, hook)
39+
def execute_hook(base, options, block)
40+
if options[:yield]
41+
block.call(base)
42+
else
43+
base.instance_eval(&block)
44+
end
45+
end
46+
47+
def run_load_hooks(name, base = Object)
48+
@loaded[name] << base
49+
@load_hooks[name].each do |hook, options|
50+
execute_hook(base, options, hook)
51+
end
4652
end
4753
end
54+
55+
extend LazyLoadHooks
4856
end

0 commit comments

Comments
 (0)