annotate config/boot.rb @ 1452:d6b9fd02bb89 feature_36_js_refactoring

Deprecated develoment branch.
author luisf <luis.figueira@eecs.qmul.ac.uk>
date Fri, 11 Oct 2013 17:01:24 +0100
parents af80e5618e9b
children cbb26bc654de
rev   line source
Chris@0 1 # Don't change this file!
Chris@0 2 # Configure your app in config/environment.rb and config/environments/*.rb
Chris@0 3
Chris@0 4 RAILS_ROOT = "#{File.dirname(__FILE__)}/.." unless defined?(RAILS_ROOT)
Chris@0 5
Chris@0 6 module Rails
Chris@0 7 class << self
Chris@0 8 def boot!
Chris@0 9 unless booted?
Chris@0 10 preinitialize
Chris@0 11 pick_boot.run
Chris@0 12 end
Chris@0 13 end
Chris@0 14
Chris@0 15 def booted?
Chris@0 16 defined? Rails::Initializer
Chris@0 17 end
Chris@0 18
Chris@0 19 def pick_boot
Chris@0 20 (vendor_rails? ? VendorBoot : GemBoot).new
Chris@0 21 end
Chris@0 22
Chris@0 23 def vendor_rails?
Chris@0 24 File.exist?("#{RAILS_ROOT}/vendor/rails")
Chris@0 25 end
Chris@0 26
Chris@0 27 def preinitialize
Chris@0 28 load(preinitializer_path) if File.exist?(preinitializer_path)
Chris@0 29 end
Chris@0 30
Chris@0 31 def preinitializer_path
Chris@0 32 "#{RAILS_ROOT}/config/preinitializer.rb"
Chris@0 33 end
Chris@0 34 end
Chris@0 35
Chris@0 36 class Boot
Chris@0 37 def run
Chris@0 38 load_initializer
Chris@0 39 Rails::Initializer.run(:set_load_path)
Chris@0 40 end
Chris@0 41 end
Chris@0 42
Chris@0 43 class VendorBoot < Boot
Chris@0 44 def load_initializer
Chris@0 45 require "#{RAILS_ROOT}/vendor/rails/railties/lib/initializer"
Chris@0 46 Rails::Initializer.run(:install_gem_spec_stubs)
Chris@0 47 Rails::GemDependency.add_frozen_gem_path
Chris@0 48 end
Chris@0 49 end
Chris@0 50
Chris@0 51 class GemBoot < Boot
Chris@0 52 def load_initializer
Chris@0 53 self.class.load_rubygems
Chris@0 54 load_rails_gem
Chris@0 55 require 'initializer'
Chris@0 56 end
Chris@0 57
Chris@0 58 def load_rails_gem
Chris@0 59 if version = self.class.gem_version
Chris@0 60 gem 'rails', version
Chris@0 61 else
Chris@0 62 gem 'rails'
Chris@0 63 end
Chris@0 64 rescue Gem::LoadError => load_error
Chris@0 65 $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 66 exit 1
Chris@0 67 end
Chris@0 68
Chris@0 69 class << self
Chris@0 70 def rubygems_version
Chris@0 71 Gem::RubyGemsVersion rescue nil
Chris@0 72 end
Chris@0 73
Chris@0 74 def gem_version
Chris@0 75 if defined? RAILS_GEM_VERSION
Chris@0 76 RAILS_GEM_VERSION
Chris@0 77 elsif ENV.include?('RAILS_GEM_VERSION')
Chris@0 78 ENV['RAILS_GEM_VERSION']
Chris@0 79 else
Chris@0 80 parse_gem_version(read_environment_rb)
Chris@0 81 end
Chris@0 82 end
Chris@0 83
Chris@0 84 def load_rubygems
Chris@0 85 min_version = '1.3.2'
Chris@0 86 require 'rubygems'
Chris@0 87 unless rubygems_version >= min_version
Chris@0 88 $stderr.puts %Q(Rails requires RubyGems >= #{min_version} (you have #{rubygems_version}). Please `gem update --system` and try again.)
Chris@0 89 exit 1
Chris@0 90 end
Chris@0 91
Chris@0 92 rescue LoadError
Chris@0 93 $stderr.puts %Q(Rails requires RubyGems >= #{min_version}. Please install RubyGems and try again: http://rubygems.rubyforge.org)
Chris@0 94 exit 1
Chris@0 95 end
Chris@0 96
Chris@0 97 def parse_gem_version(text)
Chris@0 98 $1 if text =~ /^[^#]*RAILS_GEM_VERSION\s*=\s*["']([!~<>=]*\s*[\d.]+)["']/
Chris@0 99 end
Chris@0 100
Chris@0 101 private
Chris@0 102 def read_environment_rb
Chris@0 103 File.read("#{RAILS_ROOT}/config/environment.rb")
Chris@0 104 end
Chris@0 105 end
Chris@0 106 end
Chris@0 107 end
Chris@0 108
Chris@117 109 # TODO: Workaround for #7013 to be removed for 1.2.0
Chris@117 110 # Loads i18n 0.4.2 before Rails loads any more recent gem
Chris@117 111 # 0.5.0 is not compatible with the old interpolation syntax
Chris@117 112 # Plugins will have to migrate to the new syntax for 1.2.0
Chris@117 113 require 'rubygems'
Chris@117 114 begin
Chris@117 115 gem 'i18n', '0.4.2'
Chris@117 116 rescue Gem::LoadError => load_error
Chris@117 117 $stderr.puts %(Missing the i18n 0.4.2 gem. Please `gem install -v=0.4.2 i18n`)
Chris@117 118 exit 1
Chris@117 119 end
Chris@117 120
Chris@0 121 # All that for this:
Chris@0 122 Rails.boot!