diff options
author | José Valim <jose.valim@gmail.com> | 2010-05-16 00:34:54 +0200 |
---|---|---|
committer | José Valim <jose.valim@gmail.com> | 2010-05-16 00:36:46 +0200 |
commit | 3afdfc35e8aec7e6379e093dd1278cb3de54f21b (patch) | |
tree | 851d7463d9626f852c6ef863110b381e0d10618f /railties | |
parent | 351816fab6dbe564b7bddbd877648edb06a2bfb1 (diff) | |
download | rails-3afdfc35e8aec7e6379e093dd1278cb3de54f21b.tar.gz rails-3afdfc35e8aec7e6379e093dd1278cb3de54f21b.tar.bz2 rails-3afdfc35e8aec7e6379e093dd1278cb3de54f21b.zip |
Expose remaining hooks to minimize the need for a Railtie based on feedback from plugin developers.
Diffstat (limited to 'railties')
-rw-r--r-- | railties/lib/rails/application.rb | 1 | ||||
-rw-r--r-- | railties/lib/rails/application/finisher.rb | 1 | ||||
-rw-r--r-- | railties/lib/rails/railtie/configuration.rb | 12 | ||||
-rw-r--r-- | railties/test/application/initializers/hooks_test.rb (renamed from railties/test/application/initializers/initializers_test.rb) | 28 |
4 files changed, 36 insertions, 6 deletions
diff --git a/railties/lib/rails/application.rb b/railties/lib/rails/application.rb index 9e18dccf69..a3b3a56bc8 100644 --- a/railties/lib/rails/application.rb +++ b/railties/lib/rails/application.rb @@ -69,7 +69,6 @@ module Rails raise "You cannot have more than one Rails::Application" if Rails.application super Rails.application = base.instance - ActiveSupport.run_load_hooks(:before_configuration, base.instance) end diff --git a/railties/lib/rails/application/finisher.rb b/railties/lib/rails/application/finisher.rb index 9d04f1ce38..fbab4d5515 100644 --- a/railties/lib/rails/application/finisher.rb +++ b/railties/lib/rails/application/finisher.rb @@ -37,6 +37,7 @@ module Rails initializer :eager_load! do if config.cache_classes && !$rails_rake_task + ActiveSupport.run_load_hooks(:before_eager_load, self) railties.all(&:eager_load!) end end diff --git a/railties/lib/rails/railtie/configuration.rb b/railties/lib/rails/railtie/configuration.rb index f57d82a3d8..c4a315708b 100644 --- a/railties/lib/rails/railtie/configuration.rb +++ b/railties/lib/rails/railtie/configuration.rb @@ -68,6 +68,18 @@ module Rails end end + def before_configuration(&block) + ActiveSupport.on_load(:before_configuration, :yield => true, &block) + end + + def before_eager_load(&block) + ActiveSupport.on_load(:before_eager_load, :yield => true, &block) + end + + def before_initialize(&block) + ActiveSupport.on_load(:before_initialize, :yield => true, &block) + end + def after_initialize(&block) ActiveSupport.on_load(:after_initialize, :yield => true, &block) end diff --git a/railties/test/application/initializers/initializers_test.rb b/railties/test/application/initializers/hooks_test.rb index eca42dada6..1316bf6ee2 100644 --- a/railties/test/application/initializers/initializers_test.rb +++ b/railties/test/application/initializers/hooks_test.rb @@ -16,16 +16,34 @@ module ApplicationTests assert $foo end - test "after_initialize block works correctly" do + test "hooks block works correctly without cache classes (before_eager_load is not called)" do add_to_config <<-RUBY + $initialization_callbacks = [] config.root = "#{app_path}" - config.after_initialize { $test_after_initialize_block1 = "success" } - config.after_initialize { $test_after_initialize_block2 = "congratulations" } + config.cache_classes = false + config.before_configuration { $initialization_callbacks << 1 } + config.before_initialize { $initialization_callbacks << 2 } + config.before_eager_load { Boom } + config.after_initialize { $initialization_callbacks << 3 } RUBY + require "#{app_path}/config/environment" + assert_equal [1,2,3], $initialization_callbacks + end - assert_equal "success", $test_after_initialize_block1 - assert_equal "congratulations", $test_after_initialize_block2 + test "hooks block works correctly with cache classes" do + add_to_config <<-RUBY + $initialization_callbacks = [] + config.root = "#{app_path}" + config.cache_classes = true + config.before_configuration { $initialization_callbacks << 1 } + config.before_initialize { $initialization_callbacks << 2 } + config.before_eager_load { $initialization_callbacks << 3 } + config.after_initialize { $initialization_callbacks << 4 } + RUBY + + require "#{app_path}/config/environment" + assert_equal [1,2,3,4], $initialization_callbacks end test "after_initialize runs after frameworks have been initialized" do |