Chris@909: # Don't change this file! Chris@909: # Configure your app in config/environment.rb and config/environments/*.rb Chris@909: Chris@909: if RUBY_VERSION >= '1.9' Chris@909: require 'yaml' Chris@909: YAML::ENGINE.yamler = 'syck' Chris@909: end Chris@909: Chris@909: RAILS_ROOT = "#{File.dirname(__FILE__)}/.." unless defined?(RAILS_ROOT) Chris@909: Chris@909: module Rails Chris@909: class << self Chris@909: def boot! Chris@909: unless booted? Chris@909: preinitialize Chris@909: pick_boot.run Chris@909: end Chris@909: end Chris@909: Chris@909: def booted? Chris@909: defined? Rails::Initializer Chris@909: end Chris@909: Chris@909: def pick_boot Chris@909: (vendor_rails? ? VendorBoot : GemBoot).new Chris@909: end Chris@909: Chris@909: def vendor_rails? Chris@909: File.exist?("#{RAILS_ROOT}/vendor/rails") Chris@909: end Chris@909: Chris@909: def preinitialize Chris@909: load(preinitializer_path) if File.exist?(preinitializer_path) Chris@909: end Chris@909: Chris@909: def preinitializer_path Chris@909: "#{RAILS_ROOT}/config/preinitializer.rb" Chris@909: end Chris@909: end Chris@909: Chris@909: class Boot Chris@909: def run Chris@909: load_initializer Chris@909: Rails::Initializer.run(:set_load_path) Chris@909: end Chris@909: end Chris@909: Chris@909: class VendorBoot < Boot Chris@909: def load_initializer Chris@909: require "#{RAILS_ROOT}/vendor/rails/railties/lib/initializer" Chris@909: Rails::Initializer.run(:install_gem_spec_stubs) Chris@909: Rails::GemDependency.add_frozen_gem_path Chris@909: end Chris@909: end Chris@909: Chris@909: class GemBoot < Boot Chris@909: def load_initializer Chris@909: self.class.load_rubygems Chris@909: load_rails_gem Chris@909: require 'initializer' Chris@909: end Chris@909: Chris@909: def load_rails_gem Chris@909: if version = self.class.gem_version Chris@909: gem 'rails', version Chris@909: else Chris@909: gem 'rails' Chris@909: end Chris@909: rescue Gem::LoadError => load_error Chris@909: if load_error.message =~ /Could not find RubyGem rails/ Chris@909: 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@909: exit 1 Chris@909: else Chris@909: raise Chris@909: end Chris@909: end Chris@909: Chris@909: class << self Chris@909: def rubygems_version Chris@909: Gem::RubyGemsVersion rescue nil Chris@909: end Chris@909: Chris@909: def gem_version Chris@909: if defined? RAILS_GEM_VERSION Chris@909: RAILS_GEM_VERSION Chris@909: elsif ENV.include?('RAILS_GEM_VERSION') Chris@909: ENV['RAILS_GEM_VERSION'] Chris@909: else Chris@909: parse_gem_version(read_environment_rb) Chris@909: end Chris@909: end Chris@909: Chris@909: def load_rubygems Chris@909: min_version = '1.3.2' Chris@909: require 'rubygems' Chris@909: unless rubygems_version >= min_version Chris@909: $stderr.puts %Q(Rails requires RubyGems >= #{min_version} (you have #{rubygems_version}). Please `gem update --system` and try again.) Chris@909: exit 1 Chris@909: end Chris@909: Chris@909: rescue LoadError Chris@909: $stderr.puts %Q(Rails requires RubyGems >= #{min_version}. Please install RubyGems and try again: http://rubygems.rubyforge.org) Chris@909: exit 1 Chris@909: end Chris@909: Chris@909: def parse_gem_version(text) Chris@909: $1 if text =~ /^[^#]*RAILS_GEM_VERSION\s*=\s*["']([!~<>=]*\s*[\d.]+)["']/ Chris@909: end Chris@909: Chris@909: private Chris@909: def read_environment_rb Chris@909: File.read("#{RAILS_ROOT}/config/environment.rb") Chris@909: end Chris@909: end Chris@909: end Chris@909: end Chris@909: Chris@909: # All that for this: Chris@909: Rails.boot!