aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2010-05-16 00:34:54 +0200
committerJosé Valim <jose.valim@gmail.com>2010-05-16 00:36:46 +0200
commit3afdfc35e8aec7e6379e093dd1278cb3de54f21b (patch)
tree851d7463d9626f852c6ef863110b381e0d10618f
parent351816fab6dbe564b7bddbd877648edb06a2bfb1 (diff)
downloadrails-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.
-rw-r--r--railties/lib/rails/application.rb1
-rw-r--r--railties/lib/rails/application/finisher.rb1
-rw-r--r--railties/lib/rails/railtie/configuration.rb12
-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