diff options
author | wycats <wycats@gmail.com> | 2010-03-29 17:08:08 -0700 |
---|---|---|
committer | wycats <wycats@gmail.com> | 2010-03-29 17:08:50 -0700 |
commit | 4aded43b73ff94dbf06b4a2d2075651ce454e1d5 (patch) | |
tree | 6bac5b0c25e5186b6e92c04fb6e19550630bbe8a /activesupport/lib/active_support/lazy_load_hooks.rb | |
parent | 331327d3919a633679dd3f434d13173fa8df010f (diff) | |
download | rails-4aded43b73ff94dbf06b4a2d2075651ce454e1d5.tar.gz rails-4aded43b73ff94dbf06b4a2d2075651ce454e1d5.tar.bz2 rails-4aded43b73ff94dbf06b4a2d2075651ce454e1d5.zip |
Replace the placeholder base_hook API with on_load. To specify some code that
should run during framework load do:
ActiveSupport.on_load(:action_controller) do
# Code run in the context of AC::Base
end
Diffstat (limited to 'activesupport/lib/active_support/lazy_load_hooks.rb')
-rw-r--r-- | activesupport/lib/active_support/lazy_load_hooks.rb | 30 |
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 |