<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>test/rails_root/config/initializers/new_rails_defaults.rb</filename>
    </added>
    <added>
      <filename>test/rails_root/public/422.html</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,45 +1,109 @@
-# Don't change this file. Configuration is done in config/environment.rb and config/environments/*.rb
+# Don't change this file!
+# Configure your app in config/environment.rb and config/environments/*.rb
 
-unless defined?(RAILS_ROOT)
-  root_path = File.join(File.dirname(__FILE__), '..')
+RAILS_ROOT = &quot;#{File.dirname(__FILE__)}/..&quot; unless defined?(RAILS_ROOT)
 
-  unless RUBY_PLATFORM =~ /(:?mswin|mingw)/
-    require 'pathname'
-    root_path = Pathname.new(root_path).cleanpath(true).to_s
-  end
+module Rails
+  class &lt;&lt; self
+    def boot!
+      unless booted?
+        preinitialize
+        pick_boot.run
+      end
+    end
 
-  RAILS_ROOT = root_path
-end
+    def booted?
+      defined? Rails::Initializer
+    end
+
+    def pick_boot
+      (vendor_rails? ? VendorBoot : GemBoot).new
+    end
+
+    def vendor_rails?
+      File.exist?(&quot;#{RAILS_ROOT}/vendor/rails&quot;)
+    end
 
-unless defined?(Rails::Initializer)
-  if File.directory?(&quot;#{RAILS_ROOT}/vendor/rails&quot;)
-    require &quot;#{RAILS_ROOT}/vendor/rails/railties/lib/initializer&quot;
-  else
-    require 'rubygems'
+    def preinitialize
+      load(preinitializer_path) if File.exist?(preinitializer_path)
+    end
 
-    environment_without_comments = IO.readlines(File.dirname(__FILE__) + '/environment.rb').reject { |l| l =~ /^#/ }.join
-    environment_without_comments =~ /[^#]RAILS_GEM_VERSION = '([\d.]+)'/
-    rails_gem_version = $1
+    def preinitializer_path
+      &quot;#{RAILS_ROOT}/config/preinitializer.rb&quot;
+    end
+  end
 
-    if version = defined?(RAILS_GEM_VERSION) ? RAILS_GEM_VERSION : rails_gem_version
-      # Asking for 1.1.6 will give you 1.1.6.5206, if available -- makes it easier to use beta gems
-      rails_gem = Gem.cache.search('rails', &quot;~&gt;#{version}.0&quot;).sort_by { |g| g.version.version }.last
+  class Boot
+    def run
+      load_initializer
+      Rails::Initializer.run(:set_load_path)
+    end
+  end
 
-      if rails_gem
-        gem &quot;rails&quot;, &quot;=#{rails_gem.version.version}&quot;
-        require rails_gem.full_gem_path + '/lib/initializer'
+  class VendorBoot &lt; Boot
+    def load_initializer
+      require &quot;#{RAILS_ROOT}/vendor/rails/railties/lib/initializer&quot;
+      Rails::Initializer.run(:install_gem_spec_stubs)
+    end
+  end
+
+  class GemBoot &lt; 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
-        STDERR.puts %(Cannot find gem for Rails ~&gt;#{version}.0:
-    Install the missing gem with 'gem install -v=#{version} rails', or
-    change environment.rb to define RAILS_GEM_VERSION with your desired version.
-  )
+        gem 'rails'
+      end
+    rescue Gem::LoadError =&gt; 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 &lt;&lt; self
+      def rubygems_version
+        Gem::RubyGemsVersion if defined? Gem::RubyGemsVersion
+      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
+        require 'rubygems'
+
+        unless rubygems_version &gt;= '0.9.4'
+          $stderr.puts %(Rails requires RubyGems &gt;= 0.9.4 (you have #{rubygems_version}). Please `gem update --system` and try again.)
+          exit 1
+        end
+
+      rescue LoadError
+        $stderr.puts %(Rails requires RubyGems &gt;= 0.9.4. Please install RubyGems and try again: http://rubygems.rubyforge.org)
         exit 1
       end
-    else
-      gem &quot;rails&quot;
-      require 'initializer'
+
+      def parse_gem_version(text)
+        $1 if text =~ /^[^#]*RAILS_GEM_VERSION\s*=\s*[&quot;']([!~&lt;&gt;=]*\s*[\d.]+)[&quot;']/
+      end
+
+      private
+        def read_environment_rb
+          File.read(&quot;#{RAILS_ROOT}/config/environment.rb&quot;)
+        end
     end
   end
-
-  Rails::Initializer.run(:set_load_path)
 end
+
+# All that for this:
+Rails.boot!</diff>
      <filename>test/rails_root/config/boot.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,10 +1,10 @@
 # Specifies gem version of Rails to use when vendor/rails is not present
 old_verbose, $VERBOSE = $VERBOSE, nil
-RAILS_GEM_VERSION = '2.0.2'
+RAILS_GEM_VERSION = '2.1.0' unless defined? RAILS_GEM_VERSION
 $VERBOSE = old_verbose
- 
+
 require File.join(File.dirname(__FILE__), 'boot')
- 
+
 Rails::Initializer.run do |config|
   # Someday, I'm going to find a way of getting rid of that symlink...
   # config.plugin_paths = ['../../../']
@@ -15,4 +15,4 @@ Rails::Initializer.run do |config|
   # config.load_paths &lt;&lt; File.join(File.dirname(__FILE__), *%w{.. .. .. lib})
 end
  
-# Dependencies.log_activity = true
\ No newline at end of file
+# Dependencies.log_activity = true</diff>
      <filename>test/rails_root/config/environment.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,7 +5,7 @@
 
 &lt;head&gt;
   &lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=UTF-8&quot; /&gt;
-  &lt;title&gt;We're sorry, but something went wrong&lt;/title&gt;
+  &lt;title&gt;We're sorry, but something went wrong (500)&lt;/title&gt;
 	&lt;style type=&quot;text/css&quot;&gt;
 		body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
 		div.dialog {</diff>
      <filename>test/rails_root/public/500.html</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,3 @@
 #!/usr/bin/env ruby
 require File.dirname(__FILE__) + '/../config/boot'
-require 'commands/console'
\ No newline at end of file
+require 'commands/console'</diff>
      <filename>test/rails_root/script/console</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,3 @@
 #!/usr/bin/env ruby
 require File.dirname(__FILE__) + '/../config/boot'
-require 'commands/generate'
\ No newline at end of file
+require 'commands/generate'</diff>
      <filename>test/rails_root/script/generate</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>5aed59248b6292be6dba3a928db5f73b24ae1213</id>
    </parent>
  </parents>
  <author>
    <name>Ryan McGeary</name>
    <email>ryanongit@mcgeary.org</email>
  </author>
  <url>http://github.com/thoughtbot/shoulda/commit/9f8c29edf3e632cdbc9756f6c5792bdc8cc9494c</url>
  <id>9f8c29edf3e632cdbc9756f6c5792bdc8cc9494c</id>
  <committed-date>2008-07-01T06:15:13-07:00</committed-date>
  <authored-date>2008-07-01T06:15:13-07:00</authored-date>
  <message>Upped rails_root to depend on Rails 2.1.0</message>
  <tree>c7684ff03add9b697b7a1a88eecc2520c6c30f38</tree>
  <committer>
    <name>Ryan McGeary</name>
    <email>ryanongit@mcgeary.org</email>
  </committer>
</commit>
