<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -65,6 +65,7 @@ namespace :test do
   end
   
   def run(cmd)
+    cmd = cmd.join(&quot; &amp;&amp; &quot;) if cmd.is_a?(Array)
     system(cmd) || raise(&quot;failed running '#{cmd}'&quot;)
   end
   
@@ -76,9 +77,8 @@ namespace :test do
   desc 'Build the test rails application (use RAILS=[edge,&lt;directory&gt;] to test against specific version)'
   task :generate_app do
     silence do |out, err|
-    
       out.puts &quot;&gt; Creating test application at #{test_app_dir}&quot;
-
+        
       if ENV['RAILS']
         vendor_dir = File.join(test_app_dir, 'vendor')
         FileUtils.mkdir_p vendor_dir
@@ -87,19 +87,27 @@ namespace :test do
           out.puts &quot;    Cloning Edge Rails from GitHub&quot;
           run &quot;cd #{vendor_dir} &amp;&amp; git clone --depth 1 git://github.com/rails/rails.git&quot;
         elsif ENV['RAILS'] =~ /\d\.\d\.\d/
-          out.puts &quot;    Cloning Rails Tag #{ENV['RAILS']} from GitHub&quot;
-          run [&quot;cd #{vendor_dir}&quot;,
-               &quot;git clone --depth 1 git://github.com/rails/rails.git&quot;,
-               &quot;cd rails&quot;,
-               &quot;git pull&quot;,
-               &quot;git checkout v#{ENV['RAILS']}&quot;].join(&quot; &amp;&amp; &quot;)
+          if ENV['CURL']
+            out.puts &quot;    Cloning Rails Tag #{ENV['RAILS']} from GitHub using curl and tar&quot;
+            run [&quot;cd #{vendor_dir}&quot;,
+                 &quot;mkdir rails&quot;,
+                 &quot;cd rails&quot;,
+                 &quot;curl -s -L http://github.com/rails/rails/tarball/v2.1.0 | tar xzv --strip-components 1&quot;]
+          else
+            out.puts &quot;    Cloning Rails Tag #{ENV['RAILS']} from GitHub (can be slow - set CURL=true to use curl)&quot;
+            run [&quot;cd #{vendor_dir}&quot;,
+                 &quot;git clone git://github.com/rails/rails.git&quot;,
+                 &quot;cd rails&quot;,
+                 &quot;git pull&quot;,
+                 &quot;git checkout v#{ENV['RAILS']}&quot;]
+          end
         elsif File.exist?(ENV['RAILS'])
           out.puts &quot;    Linking rails from #{ENV['RAILS']}&quot;
           run &quot;cd #{vendor_dir} &amp;&amp; ln -s #{ENV['RAILS']} rails&quot;
         else
           raise &quot;Couldn't build test application from '#{ENV['RAILS']}'&quot;
         end
-        
+      
         out.puts &quot;    generating rails default directory structure&quot;
         run &quot;ruby #{File.join(vendor_dir, 'rails', 'railties', 'bin', 'rails')} #{test_app_dir}&quot;
       else
@@ -107,7 +115,7 @@ namespace :test do
         out.puts &quot;    building rails using the 'rails' command (rails version: #{version})&quot;
         run &quot;rails #{test_app_dir}&quot;
       end
-      
+    
       # get the database config and schema in place
       out.puts &quot;    writing database.yml&quot;
       require 'yaml'
@@ -182,9 +190,17 @@ namespace :test do
   
   desc 'Prepare the engines test environment'
   task :test_app do
-    puts &quot;&gt; Recreating test application&quot;
-    Rake::Task[&quot;test:clean&quot;].invoke
-    Rake::Task[&quot;test:generate_app&quot;].invoke
+    version_tag = File.join(test_app_dir, 'RAILS_VERSION')
+    existing_version = File.read(version_tag).chomp rescue 'unknown'
+    if existing_version == ENV['RAILS']
+      puts &quot;&gt; Reusing existing test application (#{ENV['RAILS']})&quot;
+    else
+      puts &quot;&gt; Recreating test application&quot;
+      Rake::Task[&quot;test:clean&quot;].invoke
+      Rake::Task[&quot;test:generate_app&quot;].invoke
+      
+      File.open(version_tag, &quot;w&quot;) { |f| f.write ENV['RAILS'] }
+    end
   end
 end
 </diff>
      <filename>Rakefile</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>ccc9c22fe433aff6ab5949eac46c0de46f937079</id>
    </parent>
  </parents>
  <author>
    <name>James Adam</name>
    <email>james@lazyatom.com</email>
  </author>
  <url>http://github.com/azimux/engines/commit/f52b0ae9c237c19bcdd19402c45a56c65f7c75bd</url>
  <id>f52b0ae9c237c19bcdd19402c45a56c65f7c75bd</id>
  <committed-date>2008-06-06T08:01:14-07:00</committed-date>
  <authored-date>2008-06-06T08:01:14-07:00</authored-date>
  <message>Added some efficiency tweaks for grabbing rails tags</message>
  <tree>bc5d031dd26915521d62dd644b08407eeb18b637</tree>
  <committer>
    <name>James Adam</name>
    <email>james@lazyatom.com</email>
  </committer>
</commit>
