2008-05-18 06:22:34 +02:00
# Don't change this file!
# Configure your app in config/environment.rb and config/environments/*.rb
2007-02-13 16:55:26 +01:00
2010-09-25 05:36:30 +02:00
RAILS_ROOT = File . join ( File . dirname ( __FILE__ ) , '..' ) unless defined? ( RAILS_ROOT )
2007-02-13 16:55:26 +01:00
2008-05-18 06:22:34 +02:00
module Rails
class << self
def boot!
unless booted?
preinitialize
pick_boot . run
end
end
2007-02-13 16:55:26 +01:00
2008-05-18 06:22:34 +02:00
def booted?
defined? Rails :: Initializer
end
2007-01-22 14:43:50 +01:00
2008-05-18 06:22:34 +02:00
def pick_boot
( vendor_rails? ? VendorBoot : GemBoot ) . new
end
def vendor_rails?
2010-09-25 05:36:30 +02:00
File . exist? ( File . join ( RAILS_ROOT , 'vendor' , 'rails' ) )
2008-05-18 06:22:34 +02:00
end
2007-02-13 16:55:26 +01:00
2008-05-18 06:22:34 +02:00
def preinitialize
load ( preinitializer_path ) if File . exist? ( preinitializer_path )
end
def preinitializer_path
2010-09-25 05:36:30 +02:00
File . join ( RAILS_ROOT , 'config' , 'preinitializer.rb' )
2008-05-18 06:22:34 +02:00
end
end
class Boot
def run
load_initializer
Rails :: Initializer . run ( :set_load_path )
end
end
class VendorBoot < Boot
def load_initializer
2010-09-25 05:36:30 +02:00
require File . join ( RAILS_ROOT , 'vendor' , 'rails' , 'railties' , 'lib' , 'initializer' )
2008-05-18 06:22:34 +02:00
Rails :: Initializer . run ( :install_gem_spec_stubs )
2010-09-25 05:36:30 +02:00
Rails :: GemDependency . add_frozen_gem_path
2008-05-18 06:22:34 +02:00
end
end
2007-02-13 16:55:26 +01:00
2008-05-18 06:22:34 +02:00
class GemBoot < Boot
def load_initializer
self . class . load_rubygems
load_rails_gem
require 'initializer'
end
2007-02-13 16:55:26 +01:00
2008-05-18 06:22:34 +02:00
def load_rails_gem
if version = self . class . gem_version
gem 'rails' , version
2007-02-13 16:55:26 +01:00
else
2008-05-18 06:22:34 +02:00
gem 'rails'
end
rescue Gem :: LoadError = > load_error
$stderr . puts %( Missing the Rails #{ version } gem. Please `gem install -v= #{ version } rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed. )
exit 1
end
class << self
def rubygems_version
2010-09-25 05:36:30 +02:00
Gem :: RubyGemsVersion rescue nil
2008-05-18 06:22:34 +02:00
end
def gem_version
if defined? RAILS_GEM_VERSION
RAILS_GEM_VERSION
elsif ENV . include? ( 'RAILS_GEM_VERSION' )
ENV [ 'RAILS_GEM_VERSION' ]
else
parse_gem_version ( read_environment_rb )
end
end
def load_rubygems
2010-09-25 05:36:30 +02:00
min_version = '1.3.6'
2008-05-18 06:22:34 +02:00
require 'rubygems'
2010-09-25 05:36:30 +02:00
unless rubygems_version > = min_version
$stderr . puts %Q( Rails requires RubyGems >= #{ min_version } ( you have #{ rubygems_version } ) . Please `gem update --system` and try again. )
2008-05-18 06:22:34 +02:00
exit 1
end
rescue LoadError
2010-09-25 05:36:30 +02:00
$stderr . puts %Q( Rails requires RubyGems >= #{ min_version } . Please install RubyGems and try again: http://rubygems.rubyforge.org )
2007-02-13 16:55:26 +01:00
exit 1
end
2008-05-18 06:22:34 +02:00
def parse_gem_version ( text )
$1 if text =~ / ^[^ # ]*RAILS_GEM_VERSION \ s*= \ s*["']([!~<>=]* \ s*[ \ d.]+)["'] /
end
private
def read_environment_rb
2010-09-25 05:36:30 +02:00
File . read ( File . join ( RAILS_ROOT , 'config' , 'environment.rb' ) )
2008-05-18 06:22:34 +02:00
end
2007-02-13 16:55:26 +01:00
end
end
2008-05-18 06:22:34 +02:00
end
2007-01-22 14:43:50 +01:00
2010-09-25 05:36:30 +02:00
class Rails :: Boot
def run
load_initializer
Rails :: Initializer . class_eval do
def load_gems
@bundler_loaded || = Bundler . require :default , Rails . env
end
end
Rails :: Initializer . run ( :set_load_path )
end
end
2008-05-18 06:22:34 +02:00
# All that for this:
Rails . boot!