# Don't change this file! # Configure your app in config/environment.rb and config/environments/*.rb RAILS_ROOT = "#{File.dirname(__FILE__)}/.." unless defined?(RAILS_ROOT) module Rails class << self def boot! unless booted? preinitialize pick_boot.run end end def booted? defined? Rails::Initializer end def pick_boot (vendor_rails? ? VendorBoot : GemBoot).new end def vendor_rails? File.exist?("#{RAILS_ROOT}/vendor/rails") end def preinitialize load(preinitializer_path) if File.exist?(preinitializer_path) end def preinitializer_path "#{RAILS_ROOT}/config/preinitializer.rb" end end class Boot def run load_initializer Rails::Initializer.run(:set_load_path) end end class VendorBoot < Boot def load_initializer require "#{RAILS_ROOT}/vendor/rails/railties/lib/initializer" Rails::Initializer.run(:install_gem_spec_stubs) Rails::GemDependency.add_frozen_gem_path end end class GemBoot < Boot def load_initializer self.class.load_rubygems load_rails_gem require 'initializer' end def load_rails_gem if version = self.class.gem_version gem 'rails', version else 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 Gem::RubyGemsVersion rescue nil 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 min_version = '1.3.2' require 'rubygems' unless rubygems_version >= min_version $stderr.puts %Q(Rails requires RubyGems >= #{min_version} (you have #{rubygems_version}). Please `gem update --system` and try again.) exit 1 end rescue LoadError $stderr.puts %Q(Rails requires RubyGems >= #{min_version}. Please install RubyGems and try again: http://rubygems.rubyforge.org) exit 1 end def parse_gem_version(text) $1 if text =~ /^[^#]*RAILS_GEM_VERSION\s*=\s*["']([!~<>=]*\s*[\d.]+)["']/ end private def read_environment_rb File.read("#{RAILS_ROOT}/config/environment.rb") end end end end # TODO: Workaround for #7013 to be removed for 1.2.0 # Loads i18n 0.4.2 before Rails loads any more recent gem # 0.5.0 is not compatible with the old interpolation syntax # Plugins will have to migrate to the new syntax for 1.2.0 require 'rubygems' begin gem 'i18n', '0.4.2' rescue Gem::LoadError => load_error $stderr.puts %(Missing the i18n 0.4.2 gem. Please `gem install -v=0.4.2 i18n`) exit 1 end # TODO: Workaround for rubygems > 1.5 compatibility (#133), to be removed # for Rails > 2.3.5 # # Fixes the deprecation warning about removal of version_requirements for # rubygems < 1.5 and provide a workaround for rubygems >= 1.5 where that # method was finally removed. module Rails # See lib/gems/1.8/gems/rails-2.3.5/lib/rails/gem_dependency.rb class GemDependency < Gem::Dependency def dependencies return [] if framework_gem? return [] unless installed? specification.dependencies.reject do |dependency| dependency.type == :development end.map do |dependency| GemDependency.new(dependency.name, :requirement => (dependency.respond_to?(:requirement) ? dependency.requirement : dependency.version_requirements)) end end if method_defined?(:requirement) # rubygem > 1.5 def requirement req = super req unless req == Gem::Requirement.default end # bypass passenger error alias :version_requirements :requirement else # rubygem < 1.5 def requirement req = version_requirements req unless req == Gem::Requirement.default end end end end # All that for this: Rails.boot!