Skip to content

Commit

Permalink
Load config/preinitializer.rb, if present, before loading the environ…
Browse files Browse the repository at this point in the history
…ment. Closes #9943.

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8159 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information
jeremy committed Nov 17, 2007
1 parent 24c9250 commit 4249ffe
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 2 deletions.
2 changes: 2 additions & 0 deletions railties/CHANGELOG
Original file line number Diff line number Diff line change
@@ -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]
Expand Down
13 changes: 12 additions & 1 deletion railties/environments/boot.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,10 @@
module Rails
class << self
def boot!
pick_boot.run unless booted?
unless booted?
preinitialize
pick_boot.run
end
end

def booted?
Expand All @@ -20,6 +23,14 @@ def pick_boot
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
Expand Down
19 changes: 18 additions & 1 deletion railties/test/boot_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,29 @@ def test_boot_returns_if_booted
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)
Expand Down

0 comments on commit 4249ffe

Please sign in to comment.