aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support/lazy_load_hooks.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activesupport/lib/active_support/lazy_load_hooks.rb')
-rw-r--r--activesupport/lib/active_support/lazy_load_hooks.rb30
1 files changed, 11 insertions, 19 deletions
diff --git a/activesupport/lib/active_support/lazy_load_hooks.rb b/activesupport/lib/active_support/lazy_load_hooks.rb
index 36acfda524..642a4c105c 100644
--- a/activesupport/lib/active_support/lazy_load_hooks.rb
+++ b/activesupport/lib/active_support/lazy_load_hooks.rb
@@ -1,25 +1,17 @@
module ActiveSupport
- module LazyLoadHooks
- def _setup_base_hooks
- @base_hooks ||= Hash.new {|h,k| h[k] = [] }
- @base ||= {}
- end
-
- def base_hook(name = nil, &block)
- _setup_base_hooks
+ @load_hooks = Hash.new {|h,k| h[k] = [] }
+ @loaded = {}
- if base = @base[name]
- base.instance_eval(&block)
- else
- @base_hooks[name] << block
- end
+ def self.on_load(name, &block)
+ if base = @loaded[name]
+ base.instance_eval(&block)
+ else
+ @load_hooks[name] << block
end
+ end
- def run_base_hooks(base, name = nil)
- _setup_base_hooks
-
- @base_hooks[name].each { |hook| base.instance_eval(&hook) } if @base_hooks
- @base[name] = base
- end
+ def self.run_load_hooks(name, base = Object)
+ @load_hooks[name].each { |hook| base.instance_eval(&hook) }
+ @loaded[name] = base
end
end \ No newline at end of file