From 4249ffe2498e9a77242205f95245ba1fcca92732 Mon Sep 17 00:00:00 2001 From: Jeremy Kemper Date: Sat, 17 Nov 2007 01:38:58 +0000 Subject: [PATCH] Load config/preinitializer.rb, if present, before loading the environment. Closes #9943. git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8159 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- railties/CHANGELOG | 2 ++ railties/environments/boot.rb | 13 ++++++++++++- railties/test/boot_test.rb | 19 ++++++++++++++++++- 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/railties/CHANGELOG b/railties/CHANGELOG index 87805fd1e7..86bad736ac 100644 --- a/railties/CHANGELOG +++ b/railties/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Load config/preinitializer.rb, if present, before loading the environment. #9943 [Chad Woolley] + * FastCGI handler ignores unsupported signals like USR2 on Windows. [Grzegorz Derebecki] * Only load ActionMailer::TestCase if ActionMailer is loaded. Closes #10137 [defunkt] diff --git a/railties/environments/boot.rb b/railties/environments/boot.rb index 7591290447..518a8883c1 100644 --- a/railties/environments/boot.rb +++ b/railties/environments/boot.rb @@ -6,7 +6,10 @@ RAILS_ROOT = "#{File.dirname(__FILE__)}/.." unless defined?(RAILS_ROOT) module Rails class << self def boot! - pick_boot.run unless booted? + unless booted? + preinitialize + pick_boot.run + end end def booted? @@ -20,6 +23,14 @@ module Rails def vendor_rails? File.exist?("#{RAILS_ROOT}/vendor/rails") end + + def preinitialize + load(preinitializer_path) if File.exists?(preinitializer_path) + end + + def preinitializer_path + "#{RAILS_ROOT}/config/preinitializer.rb" + end end class Boot diff --git a/railties/test/boot_test.rb b/railties/test/boot_test.rb index 5d5fb09b41..930a0d552a 100644 --- a/railties/test/boot_test.rb +++ b/railties/test/boot_test.rb @@ -11,12 +11,29 @@ class BootTest < Test::Unit::TestCase assert_nil Rails.boot! end - def test_boot_picks_and_runs_if_not_booted + def test_boot_preinitializes_then_picks_and_runs_if_not_booted Rails.expects(:booted?).returns(false) + Rails.expects(:preinitialize) Rails.expects(:pick_boot).returns(mock(:run => 'result')) assert_equal 'result', Rails.boot! end + def test_preinitialize_does_not_raise_exception_if_preinitializer_file_does_not_exist + Rails.stubs(:preinitializer_path).returns('/there/is/no/such/file') + + assert_nothing_raised { Rails.preinitialize } + end + + def test_load_preinitializer_loads_preinitializer_file + Rails.stubs(:preinitializer_path).returns("#{File.dirname(__FILE__)}/fixtures/environment_with_constant.rb") + + assert_nil $initialize_test_set_from_env + Rails.preinitialize + assert_equal "success", $initialize_test_set_from_env + ensure + $initialize_test_set_from_env = nil + end + def test_boot_vendor_rails_by_default Rails.expects(:booted?).returns(false) File.expects(:exist?).with("#{RAILS_ROOT}/vendor/rails").returns(true)