@@ -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
4856end
0 commit comments