aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2010-02-19 08:02:28 +0100
committerJosé Valim <jose.valim@gmail.com>2010-02-19 08:15:49 +0100
commite49f94d71cdcdd3b891959e59203fd5e664c8add (patch)
tree84d0ec6beac626b8c42dd3a3730266805fe22f31
parente2806929ec4bc3d429011039f4b046b600b7c8f8 (diff)
downloadrails-e49f94d71cdcdd3b891959e59203fd5e664c8add.tar.gz
rails-e49f94d71cdcdd3b891959e59203fd5e664c8add.tar.bz2
rails-e49f94d71cdcdd3b891959e59203fd5e664c8add.zip
Revert behavior from a5684dfa3c16472bfa5d5d861ba78cb6dbadcb59 and ensure after_initializer is executed after to_prepare callbacks.
-rw-r--r--actionpack/lib/action_dispatch/middleware/callbacks.rb2
-rw-r--r--railties/lib/rails/application/finisher.rb11
-rw-r--r--railties/test/application/initializers/initializers_test.rb18
3 files changed, 20 insertions, 11 deletions
diff --git a/actionpack/lib/action_dispatch/middleware/callbacks.rb b/actionpack/lib/action_dispatch/middleware/callbacks.rb
index 7cf75ffe63..d07841218a 100644
--- a/actionpack/lib/action_dispatch/middleware/callbacks.rb
+++ b/actionpack/lib/action_dispatch/middleware/callbacks.rb
@@ -37,7 +37,7 @@ module ActionDispatch
def initialize(app, prepare_each_request = false)
@app, @prepare_each_request = app, prepare_each_request
- run_callbacks(:prepare) unless @prepare_each_request
+ run_callbacks(:prepare)
end
def call(env)
diff --git a/railties/lib/rails/application/finisher.rb b/railties/lib/rails/application/finisher.rb
index afa79cad1c..cb38d5a5db 100644
--- a/railties/lib/rails/application/finisher.rb
+++ b/railties/lib/rails/application/finisher.rb
@@ -27,19 +27,16 @@ module Rails
end
end
- # Fires the user-supplied after_initialize block (config.after_initialize)
- # Should run before the middleware stack is built, because building the
- # middleware already fires to_prepare callbacks in test and production.
+ initializer :build_middleware_stack do
+ app
+ end
+
initializer :after_initialize do
config.after_initialize_blocks.each do |block|
block.call(self)
end
end
- initializer :build_middleware_stack do
- app
- end
-
# Disable dependency loading during request cycle
initializer :disable_dependency_loading do
if config.cache_classes && !config.dependency_loading
diff --git a/railties/test/application/initializers/initializers_test.rb b/railties/test/application/initializers/initializers_test.rb
index a6d37b15f1..2e6a707175 100644
--- a/railties/test/application/initializers/initializers_test.rb
+++ b/railties/test/application/initializers/initializers_test.rb
@@ -52,9 +52,22 @@ module ApplicationTests
assert $activerecord_configurations['development']
end
- test "after_initialize happens before to_prepare (i.e. before the middleware stack is built) on production" do
+ test "after_initialize happens after to_prepare in development" do
$order = []
add_to_config <<-RUBY
+ config.cache_classes = false
+ config.after_initialize { $order << :after_initialize }
+ config.to_prepare { $order << :to_prepare }
+ RUBY
+
+ require "#{app_path}/config/environment"
+ assert [:to_prepare, :after_initialize], $order
+ end
+
+ test "after_initialize happens after to_prepare in production" do
+ $order = []
+ add_to_config <<-RUBY
+ config.cache_classes = true
config.after_initialize { $order << :after_initialize }
config.to_prepare { $order << :to_prepare }
RUBY
@@ -62,8 +75,7 @@ module ApplicationTests
require "#{app_path}/config/application"
Rails.env.replace "production"
require "#{app_path}/config/environment"
- assert [:after_initialize, :to_prepare], $order
+ assert [:to_prepare, :after_initialize], $order
end
-
end
end