annotate config/boot.rb @ 8:0c83d98252d9 yuya

* Add custom repo prefix and proper auth realm, remove auth cache (seems like an unwise feature), pass DB handle around, various other bits of tidying
author Chris Cannam
date Thu, 12 Aug 2010 15:31:37 +0100
parents 513646585e45
children af80e5618e9b
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@0 109 # All that for this:
Chris@0 110 Rails.boot!