Chris@0: # Don't change this file! Chris@0: # Configure your app in config/environment.rb and config/environments/*.rb Chris@0: Chris@0: RAILS_ROOT = "#{File.dirname(__FILE__)}/.." unless defined?(RAILS_ROOT) Chris@0: Chris@0: module Rails Chris@0: class << self Chris@0: def boot! Chris@0: unless booted? Chris@0: preinitialize Chris@0: pick_boot.run Chris@0: end Chris@0: end Chris@0: Chris@0: def booted? Chris@0: defined? Rails::Initializer Chris@0: end Chris@0: Chris@0: def pick_boot Chris@0: (vendor_rails? ? VendorBoot : GemBoot).new Chris@0: end Chris@0: Chris@0: def vendor_rails? Chris@0: File.exist?("#{RAILS_ROOT}/vendor/rails") Chris@0: end Chris@0: Chris@0: def preinitialize Chris@0: load(preinitializer_path) if File.exist?(preinitializer_path) Chris@0: end Chris@0: Chris@0: def preinitializer_path Chris@0: "#{RAILS_ROOT}/config/preinitializer.rb" Chris@0: end Chris@0: end Chris@0: Chris@0: class Boot Chris@0: def run Chris@0: load_initializer Chris@0: Rails::Initializer.run(:set_load_path) Chris@0: end Chris@0: end Chris@0: Chris@0: class VendorBoot < Boot Chris@0: def load_initializer Chris@0: require "#{RAILS_ROOT}/vendor/rails/railties/lib/initializer" Chris@0: Rails::Initializer.run(:install_gem_spec_stubs) Chris@0: Rails::GemDependency.add_frozen_gem_path Chris@0: end Chris@0: end Chris@0: Chris@0: class GemBoot < Boot Chris@0: def load_initializer Chris@0: self.class.load_rubygems Chris@0: load_rails_gem Chris@0: require 'initializer' Chris@0: end Chris@0: Chris@0: def load_rails_gem Chris@0: if version = self.class.gem_version Chris@0: gem 'rails', version Chris@0: else Chris@0: gem 'rails' Chris@0: end Chris@0: rescue Gem::LoadError => load_error Chris@0: $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.) Chris@0: exit 1 Chris@0: end Chris@0: Chris@0: class << self Chris@0: def rubygems_version Chris@0: Gem::RubyGemsVersion rescue nil Chris@0: end Chris@0: Chris@0: def gem_version Chris@0: if defined? RAILS_GEM_VERSION Chris@0: RAILS_GEM_VERSION Chris@0: elsif ENV.include?('RAILS_GEM_VERSION') Chris@0: ENV['RAILS_GEM_VERSION'] Chris@0: else Chris@0: parse_gem_version(read_environment_rb) Chris@0: end Chris@0: end Chris@0: Chris@0: def load_rubygems Chris@0: min_version = '1.3.2' Chris@0: require 'rubygems' Chris@0: unless rubygems_version >= min_version Chris@0: $stderr.puts %Q(Rails requires RubyGems >= #{min_version} (you have #{rubygems_version}). Please `gem update --system` and try again.) Chris@0: exit 1 Chris@0: end Chris@0: Chris@0: rescue LoadError Chris@0: $stderr.puts %Q(Rails requires RubyGems >= #{min_version}. Please install RubyGems and try again: http://rubygems.rubyforge.org) Chris@0: exit 1 Chris@0: end Chris@0: Chris@0: def parse_gem_version(text) Chris@0: $1 if text =~ /^[^#]*RAILS_GEM_VERSION\s*=\s*["']([!~<>=]*\s*[\d.]+)["']/ Chris@0: end Chris@0: Chris@0: private Chris@0: def read_environment_rb Chris@0: File.read("#{RAILS_ROOT}/config/environment.rb") Chris@0: end Chris@0: end Chris@0: end Chris@0: end Chris@0: Chris@119: # TODO: Workaround for #7013 to be removed for 1.2.0 Chris@119: # Loads i18n 0.4.2 before Rails loads any more recent gem Chris@119: # 0.5.0 is not compatible with the old interpolation syntax Chris@119: # Plugins will have to migrate to the new syntax for 1.2.0 Chris@119: require 'rubygems' Chris@119: begin Chris@119: gem 'i18n', '0.4.2' Chris@119: rescue Gem::LoadError => load_error Chris@119: $stderr.puts %(Missing the i18n 0.4.2 gem. Please `gem install -v=0.4.2 i18n`) Chris@119: exit 1 Chris@119: end Chris@119: Chris@0: # All that for this: Chris@0: Rails.boot!