<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>vendor/plugins/engines/.gitignore</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/app/controllers/app_and_plugin_controller.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/app/controllers/application.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/app/controllers/namespace/app_and_plugin_controller.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/app/helpers/mail_helper.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/app/models/app_and_plugin_model.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/app/models/notify_mail.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/app/things/thing.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/app/views/app_and_plugin/a_view.html.erb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/app/views/namespace/app_and_plugin/a_view.html.erb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/app/views/notify_mail/implicit_multipart.text.html.erb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/app/views/notify_mail/implicit_multipart.text.plain.erb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/app/views/notify_mail/multipart_html.html.erb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/app/views/notify_mail/multipart_plain.html.erb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/app/views/notify_mail/signup.text.plain.erb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/app/views/plugin_mail/mail_from_plugin_with_application_template.text.plain.erb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/app/views/plugin_mail/multipart_from_plugin_with_application_template_plain.html.erb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/functional/controller_loading_test.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/functional/exception_notification_compatibility_test.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/functional/routes_test.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/functional/view_helpers_test.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/functional/view_loading_test.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/lib/app_and_plugin_lib_model.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/lib/engines_test_helper.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/alpha_plugin_controller.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/app_and_plugin_controller.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace/alpha_plugin_controller.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace/app_and_plugin_controller.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/namespace/shared_plugin_controller.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/alpha_plugin/app/controllers/shared_plugin_controller.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/alpha_plugin/app/models/alpha_plugin_model.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/alpha_plugin/app/models/app_and_plugin_model.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/alpha_plugin/app/models/shared_plugin_model.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/alpha_plugin/app/views/alpha_plugin/a_view.html.erb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/alpha_plugin/app/views/app_and_plugin/a_view.html.erb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/alpha_plugin/app/views/layouts/plugin_layout.erb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/alpha_plugin/a_view.html.erb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/app_and_plugin/a_view.html.erb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/alpha_plugin/app/views/namespace/shared_plugin/a_view.html.erb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/alpha_plugin/app/views/shared_plugin/a_view.html.erb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/alpha_plugin/lib/alpha_plugin_lib_model.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/alpha_plugin/lib/app_and_plugin_lib_model.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/app_and_plugin_controller.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/namespace/shared_plugin_controller.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/beta_plugin/app/controllers/shared_plugin_controller.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/beta_plugin/app/models/shared_plugin_model.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/beta_plugin/app/views/namespace/shared_plugin/a_view.html.erb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/beta_plugin/app/views/shared_plugin/a_view.html.erb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/beta_plugin/init.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/not_a_plugin/public/should_not_be_copied.txt</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/test_assets/app/controllers/assets_controller.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/test_assets/app/views/assets/index.html.erb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/test_assets/app/views/layouts/assets.html.erb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/test_assets/init.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/test_assets/public/file.txt</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/test_assets/public/subfolder/file_in_subfolder.txt</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/file.txt</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/assets/subfolder/file_in_subfolder.txt</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/test_assets_with_assets_directory/init.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/assets/file.txt</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/test_assets_with_no_subdirectory/init.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/test_code_mixing/app/things/thing.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/test_code_mixing/init.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/test_load_path/init.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/test_migration/db/migrate/001_create_tests.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/test_migration/db/migrate/002_create_others.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/test_migration/db/migrate/003_create_extras.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/test_migration/init.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/test_plugin_mailing/app/models/plugin_mail.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/mail_from_plugin.erb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/multipart_from_plugin_html.html.erb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/multipart_from_plugin_plain.html.erb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/multipart_from_plugin_with_application_template_html.html.erb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/test_plugin_mailing/app/views/plugin_mail/multipart_from_plugin_with_application_template_plain.html.erb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/test_plugin_mailing/init.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/test_routing/app/controllers/namespace/test_routing_controller.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/test_routing/app/controllers/test_routing_controller.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/test_routing/init.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/test_routing/routes.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/test_testing/init.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/plugins/test_testing/test/fixtures/testing_fixtures.yml</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/unit/action_mailer_test.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/unit/arbitrary_code_mixing_test.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/unit/assets_test.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/unit/backwards_compat_test.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/unit/load_path_test.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/unit/migration_test.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/unit/model_and_lib_test.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/unit/plugins_test.rb</filename>
    </added>
    <added>
      <filename>vendor/plugins/engines/test/unit/testing_test.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,3 +1,19 @@
+= EDGE
+
+* Samuel Williams (http://www.oriontransfer.co.nz/):
+	Thanks to Tekin for his patches.
+	Updated migrations system to tie in more closely with the current rails mechanism.
+	Rake task for updating database schema info
+		rake db:migrate:upgrade_plugin_migrations
+	Please see http://engines.lighthouseapp.com/projects/10178-engines-plugin/tickets/17 for more information.
+
+* Refactored the view loading to work with changes in Edge Rails
+
+* Fixed integration of plugin migrations with the new, default timestamped migrations in Edge Rails
+
+* Refactored tests into the plugin itself - the plugin can now generate its own test_app harness and run tests within it.
+
+
 = 2.0.0 - (ANOTHER) MASSIVE INTERNAL REFACTORING
 
 * Engines now conforms to the new plugin loading mechanism, delegating plugin load order and lots of other things to Rails itself.</diff>
      <filename>vendor/plugins/engines/CHANGELOG</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-Copyright (c) 2007 James Adam
+Copyright (c) 2008 James Adam
 
 The MIT License
 </diff>
      <filename>vendor/plugins/engines/MIT-LICENSE</filename>
    </modified>
    <modified>
      <diff>@@ -23,7 +23,7 @@ In addition to the regular set of plugin-supported files (lib, init.rb, tasks, g
 Include these files in an &lt;tt&gt;app&lt;/tt&gt; directory just like you would in a normal Rails application. If you need to override a method, view or partial, create the corresponding file in your main &lt;tt&gt;app&lt;/tt&gt; directory and it will be used instead.
 
 * Controllers &amp; Helpers: See Engines::RailsExtensions::Dependencies for more information.
-* Views: See Engines::RailsExtensions::Templates for more information.
+* Views: now handled almost entirely by ActionView itself (see Engines::Plugin#add_plugin_view_paths for more information)
 
 === Models
 
@@ -60,4 +60,24 @@ The engines plugin enhances and adds to the suite of default rake tasks for work
 
   rake -T
   
-to see the set of rake tasks available.
\ No newline at end of file
+to see the set of rake tasks available.
+
+= Testing the engines plugin itself
+
+Because of the way the engines plugin modifies Rails, the simplest way to consistently test it against multiple versions is by generating a test harness application - a full Rails application that includes tests to verify the engines plugin behaviour in a real, running environment.
+
+Run the tests like this:
+
+  $ cd engines
+  $ rake test
+  
+This will generate a test_app directory within the engines plugin (using the default 'rails' command), import tests and code into that application and then run the test suite.
+
+If you wish to test against a specific version of Rails, run the tests with the RAILS environment variable set to the local directory containing your Rails checkout
+
+  $ rake test RAILS=/Users/james/Code/rails_edge_checkout
+  
+Alternatively, you can clone the latest version of Rails ('edge rails') from github like so:
+
+  $ rake test RAILS=edge
+  </diff>
      <filename>vendor/plugins/engines/README</filename>
    </modified>
    <modified>
      <diff>@@ -29,4 +29,185 @@ task :cruise do
   ['db:migrate', 'test', 'test:plugins'].each do |t|
     Rake::Task[t].invoke
   end  
-end
\ No newline at end of file
+end
+
+task :clean =&gt; [:clobber_doc, &quot;test:clean&quot;]
+
+namespace :test do
+  
+  # Yields a block with STDOUT and STDERR silenced. If you *really* want
+  # to output something, the block is yielded with the original output
+  # streams, i.e.
+  #
+  #   silence do |o, e|
+  #     puts 'hello!' # no output produced
+  #     o.puts 'hello!' # output on STDOUT
+  #   end
+  #
+  # (based on silence_stream in ActiveSupport.)
+  def silence
+    yield(STDOUT, STDERR) if ENV['VERBOSE']
+    streams = [STDOUT, STDERR]
+    actual_stdout = STDOUT.dup
+    actual_stderr = STDERR.dup
+    streams.each do |s| 
+      s.reopen(RUBY_PLATFORM =~ /mswin/ ? 'NUL:' : '/dev/null') 
+      s.sync = true
+    end
+    yield actual_stdout, actual_stderr
+  ensure
+    STDOUT.reopen(actual_stdout)
+    STDERR.reopen(actual_stderr)
+  end
+  
+  def test_app_dir
+    File.join(File.dirname(__FILE__), 'test_app')
+  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
+  
+  desc 'Remove the test application'
+  task :clean do
+    FileUtils.rm_r(test_app_dir) if File.exist?(test_app_dir)
+  end
+  
+  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
+        
+        if ENV['RAILS'] == 'edge'
+          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/
+          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/#{ENV['RAILS']} | 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
+        version = `rails --version`.chomp.split.last
+        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'
+      File.open(File.join(test_app_dir, 'config', 'database.yml'), 'w') do |f|
+        f.write(%w(development test).inject({}) do |h, env| 
+          h[env] = {&quot;adapter&quot; =&gt; &quot;sqlite3&quot;, &quot;database&quot; =&gt; &quot;engines_#{env}.sqlite3&quot;} ; h
+        end.to_yaml)
+      end
+      out.puts &quot;    installing exception_notification plugin&quot;
+      run &quot;cd #{test_app_dir} &amp;&amp; ./script/plugin install exception_notification&quot;
+    end
+  end
+  
+  # We can't link the plugin, as it needs to be present for script/generate to find
+  # the plugin generator.
+  # TODO: find and +1/create issue for loading generators from symlinked plugins
+  desc 'Mirror the engines plugin into the test application'
+  task :copy_engines_plugin do
+    puts &quot;&gt; Copying engines plugin into test application&quot;
+    engines_plugin = File.join(test_app_dir, &quot;vendor&quot;, &quot;plugins&quot;, &quot;engines&quot;)
+    FileUtils.rm_r(engines_plugin) if File.exist?(engines_plugin)
+    FileUtils.mkdir_p(engines_plugin)
+    FileList[&quot;*&quot;].exclude(&quot;test_app&quot;).each do |file|
+      FileUtils.cp_r(file, engines_plugin)
+    end
+  end
+  
+  def insert_line(line, options)
+    line = line + &quot;\n&quot;
+    target_file = File.join(test_app_dir, options[:into])
+    lines = File.readlines(target_file)
+    return if lines.include?(line)
+    
+    if options[:after]
+      if options[:after].is_a?(String)
+        after_line = options[:after] + &quot;\n&quot;
+      else
+        after_line = lines.find { |l| l =~ options[:after] }
+        raise &quot;couldn't find a line matching #{options[:after].inspect} in #{target_file}&quot; unless after_line
+      end
+      index = lines.index(after_line)
+      raise &quot;couldn't find line '#{after_line}' in #{target_file}&quot; unless index
+      lines.insert(index + 1, line)
+    else
+      lines &lt;&lt; line
+    end
+    File.open(target_file, 'w') { |f| f.write lines.join }
+  end
+  
+  def mirror_test_files(src, dest=nil)
+    destination_dir = File.join(*([test_app_dir, dest].compact))
+    FileUtils.cp_r(File.join(File.dirname(__FILE__), 'test', src), destination_dir)
+  end
+  
+  desc 'Update the plugin and tests files in the test application from the plugin'
+  task :mirror_engine_files =&gt; [:test_app, :copy_engines_plugin] do
+    puts &quot;&gt; Modifying default config files to load engines plugin&quot;
+    insert_line(&quot;require File.join(File.dirname(__FILE__), '../vendor/plugins/engines/boot')&quot;,
+                :into =&gt; 'config/environment.rb',
+                :after =&gt; &quot;require File.join(File.dirname(__FILE__), 'boot')&quot;)
+                
+    insert_line('map.from_plugin :test_routing', :into =&gt; 'config/routes.rb', 
+                :after =&gt; /\AActionController::Routing::Routes/)
+                
+    insert_line(&quot;require 'engines_test_helper'&quot;, :into =&gt; 'test/test_helper.rb')
+    
+    puts &quot;&gt; Mirroring test application files into #{test_app_dir}&quot;
+    mirror_test_files('app')
+    mirror_test_files('lib')
+    mirror_test_files('plugins', 'vendor')
+    mirror_test_files('unit', 'test')
+    mirror_test_files('functional', 'test')
+  end
+  
+  desc 'Prepare the engines test environment'
+  task :test_app do
+    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
+
+task :test =&gt; &quot;test:mirror_engine_files&quot; do
+  puts &quot;&gt; Loading the test application environment and running tests&quot;
+  # We use exec here to replace the current running rake process
+  exec(&quot;cd #{test_app_dir} &amp;&amp; rake db:migrate &amp;&amp; rake&quot;)
+end</diff>
      <filename>vendor/plugins/engines/Rakefile</filename>
    </modified>
    <modified>
      <diff>@@ -4,4 +4,4 @@ homepage: http://www.rails-engines.org
 summary: Enhances the plugin mechanism to perform more flexible sharing
 description: The Rails Engines plugin allows the sharing of almost any type of code or asset that you could use in a Rails application, including controllers, models, stylesheets, and views.
 license: MIT
-version: 2.0.0-RC1
\ No newline at end of file
+version: 2.1.0
\ No newline at end of file</diff>
      <filename>vendor/plugins/engines/about.yml</filename>
    </modified>
    <modified>
      <diff>@@ -1,8 +1,7 @@
 begin
   require 'rails/version'
-  unless Rails::VERSION::MAJOR &gt;= 2 ||
-         (Rails::VERSION::MAJOR &gt;= 1 &amp;&amp; Rails::VERSION::MINOR &gt;= 99)
-    raise &quot;This version of the engines plugin requires Rails 2.0 or later!&quot;
+  unless Rails::VERSION::MAJOR &gt;= 2 &amp;&amp; Rails::VERSION::MINOR &gt;= 2 &amp;&amp; Rails::VERSION::TINY &gt;= 0
+    raise &quot;This version of the engines plugin requires Rails 2.2.0 or later!&quot;
   end
 end
 </diff>
      <filename>vendor/plugins/engines/boot.rb</filename>
    </modified>
    <modified>
      <diff>@@ -2,11 +2,15 @@
 # within the database.
 class PluginMigrationGenerator &lt; Rails::Generator::Base
   
+  # 255 characters max for Windows NTFS (http://en.wikipedia.org/wiki/Filename)
+  # minus 14 for timestamp, minus some extra chars for dot, underscore, file 
+  # extension. So let's have 230.
+  MAX_FILENAME_LENGTH = 230
+    
   def initialize(runtime_args, runtime_options={})
     super
     @options = {:assigns =&gt; {}}
-    
-    ensure_plugin_schema_table_exists
+    ensure_schema_table_exists    
     get_plugins_to_migrate(runtime_args)
     
     if @plugins_to_migrate.empty?
@@ -25,11 +29,10 @@ class PluginMigrationGenerator &lt; Rails::Generator::Base
   end
   
   protected
-  
-    # Create the plugin schema table if it doesn't already exist. See
-    # Engines::RailsExtensions::Migrations#initialize_schema_information_with_engine_additions
-    def ensure_plugin_schema_table_exists
-      ActiveRecord::Base.connection.initialize_schema_information
+
+    # Create the schema table if it doesn't already exist.
+    def ensure_schema_table_exists
+      ActiveRecord::Base.connection.initialize_schema_migrations_table
     end
 
     # Determine all the plugins which have migrations that aren't present
@@ -69,11 +72,27 @@ class PluginMigrationGenerator &lt; Rails::Generator::Base
       @options[:assigns][:current_versions] = @current_versions
     end
 
-    # Construct a unique migration name based on the plugins involved and the
-    # versions they should reach after this migration is run.
+    # Returns a migration name. If the descriptive migration name based on the 
+    # plugin names involved is shorter than 230 characters that one will be
+    # used. Otherwise a shorter name will be returned.
     def build_migration_name
+      returning descriptive_migration_name do |name|        
+        name.replace short_migration_name if name.length &gt; MAX_FILENAME_LENGTH
+      end
+    end
+
+    # Construct a unique migration name based on the plugins involved and the
+    # versions they should reach after this migration is run. The name constructed
+    # needs to be lowercase
+    def descriptive_migration_name
       @plugins_to_migrate.map do |plugin| 
         &quot;#{plugin.name}_to_version_#{@new_versions[plugin.name]}&quot; 
-      end.join(&quot;_and_&quot;)
-    end  
+      end.join(&quot;_and_&quot;).downcase
+    end
+
+    # Short migration name that will be used if the descriptive_migration_name
+    # exceeds 230 characters
+    def short_migration_name
+      'plugin_migrations'
+    end
 end
\ No newline at end of file</diff>
      <filename>vendor/plugins/engines/generators/plugin_migration/plugin_migration_generator.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1 +1,5 @@
-Engines.init if defined? :Engines
+# Only call Engines.init once, in the after_initialize block so that Rails
+# plugin reloading works when turned on
+config.after_initialize do
+  Engines.init if defined? :Engines
+end</diff>
      <filename>vendor/plugins/engines/init.rb</filename>
    </modified>
    <modified>
      <diff>@@ -43,7 +43,7 @@ module Engines
   
   # List of extensions to load, can be changed in init.rb before calling Engines.init
   mattr_accessor :rails_extensions
-  self.rails_extensions = %w(active_record action_mailer asset_helpers routing migrations dependencies)
+  self.rails_extensions = %w(action_mailer asset_helpers routing migrations dependencies)
   
   # The name of the public directory to mirror public engine assets into.
   # Defaults to &lt;tt&gt;RAILS_ROOT/public/plugin_assets&lt;/tt&gt;.
@@ -131,18 +131,23 @@ module Engines
     def mix_code_from(*types)
       self.code_mixing_file_types += types.map { |x| x.to_s.singularize }
     end
-  
+    
     # A general purpose method to mirror a directory (+source+) into a destination
     # directory, including all files and subdirectories. Files will not be mirrored
     # if they are identical already (checked via FileUtils#identical?).
     def mirror_files_from(source, destination)
       return unless File.directory?(source)
-  
+      
       # TODO: use Rake::FileList#pathmap?    
       source_files = Dir[source + &quot;/**/*&quot;]
       source_dirs = source_files.select { |d| File.directory?(d) }
-      source_files -= source_dirs  
-  
+      source_files -= source_dirs
+      
+      unless source_files.empty?
+        base_target_dir = File.join(destination, File.dirname(source_files.first).gsub(source, ''))
+        FileUtils.mkdir_p(base_target_dir)
+      end
+      
       source_dirs.each do |dir|
         # strip down these paths so we have simple, relative paths we can
         # add to the destination
@@ -153,7 +158,7 @@ module Engines
           raise &quot;Could not create directory #{target_dir}: \n&quot; + e
         end
       end
-
+      
       source_files.each do |file|
         begin
           target = File.join(destination, file.gsub(source, ''))</diff>
      <filename>vendor/plugins/engines/lib/engines.rb</filename>
    </modified>
    <modified>
      <diff>@@ -14,7 +14,7 @@ should edit the files within the &lt;plugin_name&gt;/assets/ directory itself.}
         dir = Engines.public_directory
         unless File.exist?(dir)
           Engines.logger.debug &quot;Creating public engine files directory '#{dir}'&quot;
-          FileUtils.mkdir(dir)
+          FileUtils.mkdir_p(dir)
         end
         readme = File.join(dir, &quot;README&quot;)        
         File.open(readme, 'w') { |f| f.puts @@readme } unless File.exist?(readme)</diff>
      <filename>vendor/plugins/engines/lib/engines/assets.rb</filename>
    </modified>
    <modified>
      <diff>@@ -110,11 +110,15 @@ module Engines
     # Returns the version number of the latest migration for this plugin. Returns
     # nil if this plugin has no migrations.
     def latest_migration
+      migrations.last
+    end
+    
+    # Returns the version numbers of all migrations for this plugin.
+    def migrations
       migrations = Dir[migration_directory+&quot;/*.rb&quot;]
-      return nil if migrations.empty?
-      migrations.map { |p| File.basename(p) }.sort.last.match(/0*(\d+)\_/)[1].to_i
+      migrations.map { |p| File.basename(p).match(/0*(\d+)\_/)[1].to_i }.sort
     end
-  
+    
     # Migrate this plugin to the given version. See Engines::Plugin::Migrator for more
     # information.   
     def migrate(version = nil)</diff>
      <filename>vendor/plugins/engines/lib/engines/plugin.rb</filename>
    </modified>
    <modified>
      <diff>@@ -12,49 +12,30 @@ class Engines::Plugin::Migrator &lt; ActiveRecord::Migrator
   # We need to be able to set the 'current' engine being migrated.
   cattr_accessor :current_plugin
 
-  # Runs the migrations from a plugin, up (or down) to the version given
-  def self.migrate_plugin(plugin, version)
-    self.current_plugin = plugin
-    migrate(plugin.migration_directory, version)
-  end
-  
-  # Returns the name of the table used to store schema information about
-  # installed plugins.
-  #
-  # See Engines.schema_info_table for more details.
-  def self.schema_info_table_name
-    ActiveRecord::Base.wrapped_table_name Engines.schema_info_table
-  end
-
-  # Returns the current version of the given plugin
-  def self.current_version(plugin=current_plugin)
-    result = ActiveRecord::Base.connection.select_one(&lt;&lt;-ESQL
-      SELECT version FROM #{schema_info_table_name} 
-      WHERE plugin_name = '#{plugin.name}'
-    ESQL
-    )
-    if result
-      result[&quot;version&quot;].to_i
-    else
-      # There probably isn't an entry for this engine in the migration info table.
-      # We need to create that entry, and set the version to 0
-      ActiveRecord::Base.connection.execute(&lt;&lt;-ESQL
-        INSERT INTO #{schema_info_table_name} (version, plugin_name) 
-        VALUES (0,'#{plugin.name}')
-      ESQL
-      )      
-      0
+  class &lt;&lt; self
+    # Runs the migrations from a plugin, up (or down) to the version given
+    def migrate_plugin(plugin, version)
+      self.current_plugin = plugin
+      return if current_version(plugin) == version
+      migrate(plugin.migration_directory, version)
+    end
+    
+    def current_version(plugin=current_plugin)
+      # Delete migrations that don't match .. to_i will work because the number comes first
+      ::ActiveRecord::Base.connection.select_values(
+        &quot;SELECT version FROM #{schema_migrations_table_name}&quot;
+      ).delete_if{ |v| v.match(/-#{plugin.name}/) == nil }.map(&amp;:to_i).max || 0
     end
   end
-
-  # Sets the version of the plugin in Engines::Plugin::Migrator.current_plugin to
-  # the given version.
-  def set_schema_version(version)
-    ActiveRecord::Base.connection.update(&lt;&lt;-ESQL
-      UPDATE #{self.class.schema_info_table_name} 
-      SET version = #{down? ? version.to_i - 1 : version.to_i} 
-      WHERE plugin_name = '#{self.current_plugin.name}'
-    ESQL
-    )
+       
+  def migrated
+    sm_table = self.class.schema_migrations_table_name
+    ::ActiveRecord::Base.connection.select_values(
+      &quot;SELECT version FROM #{sm_table}&quot;
+    ).delete_if{ |v| v.match(/-#{current_plugin.name}/) == nil }.map(&amp;:to_i).sort
+  end
+  
+  def record_version_state_after_migrating(version)
+    super(version.to_s + &quot;-&quot; + current_plugin.name)
   end
 end</diff>
      <filename>vendor/plugins/engines/lib/engines/plugin/migrator.rb</filename>
    </modified>
    <modified>
      <diff>@@ -16,9 +16,6 @@
 module Engines::RailsExtensions::ActionMailer
   def self.included(base) #:nodoc:
     base.class_eval do
-      # TODO commented this out because it seems to break ActionMailer
-      # how can this be fixed?
-      
       alias_method_chain :template_path, :engine_additions
       alias_method_chain :initialize_template_class, :engine_additions
     end
@@ -70,7 +67,7 @@ module Engines::RailsExtensions::ActionMailer
       # 
       # ActionView::Base.new(ActionController::Base.view_paths.dup, assigns, self)
       renderer = initialize_template_class_without_engine_additions(assigns)
-      renderer.view_paths = ActionController::Base.view_paths.dup
+      renderer.view_paths.unshift(*ActionController::Base.view_paths.dup)
       renderer
     end
 end</diff>
      <filename>vendor/plugins/engines/lib/engines/rails_extensions/action_mailer.rb</filename>
    </modified>
    <modified>
      <diff>@@ -102,7 +102,7 @@ module Engines::RailsExtensions::Dependencies
       # if we recognise this type
       # (this regexp splits out the module/filename from any instances of app/#{type}, so that
       #  modules are still respected.)
-      if file_name =~ /^(.*app\/#{file_type}s\/)?(.*_#{file_type})(\.rb)?$/
+      if file_name =~ /^(.*app\/#{file_type}s\/)+(.*_#{file_type})(\.rb)?$/
         base_name = $2
         # ... go through the plugins from first started to last, so that
         # code with a high precedence (started later) will override lower precedence
@@ -140,6 +140,6 @@ module Engines::RailsExtensions::Dependencies
   end  
 end
 
-module ::Dependencies #:nodoc:
+module ActiveSupport::Dependencies #:nodoc:
   include Engines::RailsExtensions::Dependencies
-end
\ No newline at end of file
+end</diff>
      <filename>vendor/plugins/engines/lib/engines/rails_extensions/dependencies.rb</filename>
    </modified>
    <modified>
      <diff>@@ -32,8 +32,8 @@ require &quot;engines/plugin/migrator&quot;
 #         |- lib/
 #         |- db/
 #             |-migrate/
-#                 |- 001_do_something.rb
-#                 |- 002_and_something_else.rb
+#                 |- 20081105123419_add_some_new_feature.rb
+#                 |- 20081107144959_and_something_else.rb
 #                 |- ...
 # 
 # When you install a plugin which contains migrations, you are undertaking a
@@ -44,8 +44,8 @@ require &quot;engines/plugin/migrator&quot;
 #
 # == An example
 #
-# For example, our current application is at version 14 (according to the
-# +schema_info+ table), when we decide that we want to add a tagging plugin. The
+# For example, our current application is at version 20081106164503 (according to the
+# +schema_migrations+ table), when we decide that we want to add a tagging plugin. The
 # tagging plugin chosen includes migrations to create the tables it requires
 # (say, _tags_ and _taggings_, for instance), along with the models and helpers
 # one might expect.
@@ -57,14 +57,14 @@ require &quot;engines/plugin/migrator&quot;
 #
 #   $ script/generate plugin_migration
 #         exists  db/migrate
-#         create  db/migrate/015_migrate_tagging_plugin_to_version_3.rb
+#         create  db/migrate/20081108120415_my_plugin_to_version_20081107144959.rb
 #
-# This migration will take our application to version 15, and contains the following, 
-# typical migration code:
+# This migration will take our application to version 20081108120415, and contains the 
+# following, typical migration code:
 # 
-#   class MigrateTaggingPluginToVersion3 &lt; ActiveRecord::Migration
+#   class TaggingToVersion20081107144959 &lt; ActiveRecord::Migration
 #     def self.up
-#       Engines.plugins[:tagging].migrate(3)
+#       Engines.plugins[:tagging].migrate(20081107144959)
 #     end
 #     def self.down
 #       Engines.plugins[:tagging].migrate(0)
@@ -72,8 +72,8 @@ require &quot;engines/plugin/migrator&quot;
 #   end
 #
 # When we migrate our application up, using &lt;tt&gt;rake db:migrate&lt;/tt&gt; as normal,
-# the plugin will be migrated up to its latest version (3 in this example). If we
-# ever decide to migrate the application back to the state it was in at version 14,
+# the plugin will be migrated up to its latest version (20081108120415 in this example). If we
+# ever decide to migrate the application back to the state it was in at version 20081106164503,
 # the plugin migrations will be taken back down to version 0 (which, typically,
 # would remove all tables the plugin migrations define).
 #
@@ -88,21 +88,21 @@ require &quot;engines/plugin/migrator&quot;
 #
 #   $ script/generate plugin_migration
 #        exists db/migrate
-#        create db/migrate/023_migrate_tagging_plugin_to_version_5.rb
+#        create db/migrate/20081210131437_tagging_to_version_20081201172034.rb
 #
 # The contents of this migration are:
 #
-#   class MigrateTaggingPluginToVersion3 &lt; ActiveRecord::Migration
+#   class TaggingToVersion20081108120415 &lt; ActiveRecord::Migration
 #     def self.up
-#       Engines.plugins[:tagging].migrate(5)
+#       Engines.plugins[:tagging].migrate(20081201172034)
 #     end
 #     def self.down
-#       Engines.plugins[:tagging].migrate(3)
+#       Engines.plugins[:tagging].migrate(20081107144959)
 #     end
 #   end
 #
-# Notice that if we were to migrate down to revision 22 or lower, the tagging plugin
-# will be migrated back down to version 3 - the version we were previously at.
+# Notice that if we were to migrate down to revision 20081108120415 or lower, the tagging plugin
+# will be migrated back down to version 20081107144959 - the version we were previously at.
 #
 #
 # = Creating migrations in plugins
@@ -118,44 +118,16 @@ require &quot;engines/plugin/migrator&quot;
 #
 #   Engines.plugins[:whatever].migrate(version)
 #
-# ---
 #
-# The Engines::RailsExtensions::Migrations module defines extensions for Rails' 
-# migration systems. Specifically:
+# = Upgrading from previous versions of the engines plugin
 #
-# * Adding a hook to initialize_schema_information to create the plugin schema
-#   info table.
+# Thanks to the tireless work of the plugin developer community, we can now relying on the migration 
+# mechanism in Rails 2.1+ to do much of the plugin migration work for us. This also means that we
+# don't need a seperate schema_info table for plugins.
 #
-module Engines::RailsExtensions::Migrations
-  def self.included(base) # :nodoc:
-    base.class_eval { alias_method_chain :initialize_schema_information, :engine_additions }
-  end
-
-  # Create the schema tables, and ensure that the plugin schema table
-  # is also initialized. The plugin schema info table is defined by
-  # Engines::Plugin::Migrator.schema_info_table_name.
-  def initialize_schema_information_with_engine_additions
-    initialize_schema_information_without_engine_additions
-
-    # create the plugin schema stuff.    
-    begin
-      execute &lt;&lt;-ESQL
-        CREATE TABLE #{Engines::Plugin::Migrator.schema_info_table_name} 
-          (plugin_name #{type_to_sql(:string)}, version #{type_to_sql(:integer)})
-      ESQL
-    rescue ActiveRecord::StatementInvalid
-      # Schema has been initialized
-    end
-  end
-end
-
-module ::ActiveRecord #:nodoc:
-  module ConnectionAdapters #:nodoc:
-    module SchemaStatements #:nodoc:
-      include Engines::RailsExtensions::Migrations
-    end
-  end
-end
-
-# Set ActiveRecord to ignore the plugin schema table by default
-::ActiveRecord::SchemaDumper.ignore_tables &lt;&lt; Engines.schema_info_table
\ No newline at end of file
+# To update your application, run
+#
+#   rake db:migrate:upgrade_plugin_migrations
+#
+# This will ensure that migration information is carried over into the main schema_migrations table.
+# 
\ No newline at end of file</diff>
      <filename>vendor/plugins/engines/lib/engines/rails_extensions/migrations.rb</filename>
    </modified>
    <modified>
      <diff>@@ -8,13 +8,13 @@
 # == Including routes in your plugin
 #
 # The engines plugin makes it possible to include a set of routes within your plugin
-# very simply, as it turns out. In your plugin, you simply include a &lt;tt&gt;routes.rb&lt;/tt&gt; 
-# file like the one below at the root of your plugin:
+# very simply, as it turns out. Include a &lt;tt&gt;routes.rb&lt;/tt&gt; file like the one below 
+# at the root of your plugin (along-side &lt;tt&gt;init.rb&lt;/tt&gt; and &lt;tt&gt;lib/&lt;/tt&gt;):
 # 
-#   connect &quot;/login&quot;, :controller =&gt; &quot;my_plugin/account&quot;, :action =&gt; &quot;login&quot;
+#   connect &quot;/login&quot;, :controller =&gt; &quot;account&quot;, :action =&gt; &quot;login&quot;
 #
 #   # add a named route
-#   logout &quot;/logout&quot;, :controller =&gt; &quot;my_plugin/account&quot;, :action =&gt; &quot;logout&quot;
+#   logout &quot;/logout&quot;, :controller =&gt; &quot;account&quot;, :action =&gt; &quot;logout&quot;
 #
 #   # some restful stuff
 #   resources :things do |t|</diff>
      <filename>vendor/plugins/engines/lib/engines/rails_extensions/routing.rb</filename>
    </modified>
    <modified>
      <diff>@@ -81,7 +81,7 @@ module Engines::Testing
   # Sets the fixture path used by Test::Unit::TestCase to the temporary
   # directory which contains all plugin fixtures.
   def self.set_fixture_path
-    Test::Unit::TestCase.fixture_path = self.temporary_fixtures_directory
+    ActiveSupport::TestCase.fixture_path = self.temporary_fixtures_directory
     $LOAD_PATH.unshift self.temporary_fixtures_directory
   end
 end
\ No newline at end of file</diff>
      <filename>vendor/plugins/engines/lib/engines/testing.rb</filename>
    </modified>
    <modified>
      <diff>@@ -2,20 +2,22 @@
 # handy for modifying existing Rails rake tasks.
 # Credit for the original snippet of code goes to Jeremy Kemper
 # http://pastie.caboo.se/9620
-unless Rake::TaskManager.methods.include?(:redefine_task)
+unless Rake::TaskManager.methods.include?('redefine_task')
   module Rake
     module TaskManager
       def redefine_task(task_class, args, &amp;block)
-        task_name, deps = resolve_args(args)
+        task_name, arg_names, deps = resolve_args([args])
         task_name = task_class.scope_name(@scope, task_name)
         deps = [deps] unless deps.respond_to?(:to_ary)
         deps = deps.collect {|d| d.to_s }
         task = @tasks[task_name.to_s] = task_class.new(task_name, self)
         task.application = self
-        @last_comment = nil
+        task.add_description(@last_description)
+        @last_description = nil
         task.enhance(deps, &amp;block)
         task
       end
+      
     end
     class Task
       class &lt;&lt; self
@@ -41,6 +43,80 @@ namespace :db do
       end
     end
 
+    desc 'For engines coming from Rails version &lt; 2.0 or for those previously updated to work with Sven Fuch\'s fork of engines, you need to upgrade the schema info table'
+    task :upgrade_plugin_migrations =&gt; :environment do
+      svens_fork_table_name = 'plugin_schema_migrations'
+      
+      # Check if app was previously using Sven's fork
+      if ActiveRecord::Base.connection.table_exists?(svens_fork_table_name)
+        old_sm_table = svens_fork_table_name
+      else
+        old_sm_table = ActiveRecord::Migrator.proper_table_name(Engines.schema_info_table)
+      end
+      
+      unless ActiveRecord::Base.connection.table_exists?(old_sm_table)
+        abort &quot;Cannot find old migration table - assuming nothing needs to be done&quot;
+      end
+      
+      # There are two forms of the engines schema info - pre-fix_plugin_migrations and post
+      # We need to figure this out before we continue.
+      
+      results = ActiveRecord::Base.connection.select_rows(
+        &quot;SELECT version, plugin_name FROM #{old_sm_table}&quot;
+      ).uniq
+      
+      def insert_new_version(plugin_name, version)
+        version_string = &quot;#{version}-#{plugin_name}&quot;
+        new_sm_table = ActiveRecord::Migrator.schema_migrations_table_name
+        
+        # Check if the row already exists for some reason - maybe run this task more than once.
+        return if ActiveRecord::Base.connection.select_rows(&quot;SELECT * FROM #{new_sm_table} WHERE version = #{version_string.dump}&quot;).size &gt; 0
+        
+        puts &quot;Inserting new version #{version} for plugin #{plugin_name}..&quot;
+        ActiveRecord::Base.connection.insert(&quot;INSERT INTO #{new_sm_table} (version) VALUES (#{version_string.dump})&quot;)
+      end
+      
+      # We need to figure out if they already used &quot;fix_plugin_migrations&quot;
+      versions = {}
+      results.each do |r|
+        versions[r[1]] ||= []
+        versions[r[1]] &lt;&lt; r[0].to_i
+      end
+      
+      if versions.values.find{ |v| v.size &gt; 1 } == nil
+        puts &quot;Fixing migration info&quot;
+        # We only have one listed migration per plugin - this is pre-fix_plugin_migrations,
+        # so we build all versions required. In this case, all migrations should 
+        versions.each do |plugin_name, version|
+          version = version[0] # There is only one version
+          
+          # We have to make an assumption that numeric migrations won't get this long..
+          # I'm not sure if there is a better assumption, it should work in all
+          # current cases.. (touch wood..)
+          if version.to_s.size &lt; &quot;YYYYMMDDHHMMSS&quot;.size
+            # Insert version records for each migration
+            (1..version).each do |v|
+             insert_new_version(plugin_name, v)
+            end
+          else
+            # If the plugin is new-format &quot;YYYYMMDDHHMMSS&quot;, we just copy it across... 
+            # The case in which this occurs is very rare..
+            insert_new_version(plugin_name, version)
+          end
+        end
+      else
+        puts &quot;Moving migration info&quot;
+        # We have multiple migrations listed per plugin - thus we can assume they have
+        # already applied fix_plugin_migrations - we just copy it across verbatim
+        versions.each do |plugin_name, version|
+          version.each { |v| insert_new_version(plugin_name, v) }
+        end
+      end
+      
+      puts &quot;Migration info successfully migrated - removing old schema info table&quot;
+      ActiveRecord::Base.connection.drop_table(old_sm_table)
+    end
+    
     desc 'Migrate a specified plugin.'
     task({:plugin =&gt; :environment}, :name, :version) do |task, args|
       name = args[:name] || ENV['NAME']
@@ -51,7 +127,7 @@ namespace :db do
       else
         puts &quot;Plugin #{name} does not exist.&quot;
       end
-    end    
+    end
   end
 end
 
@@ -172,5 +248,5 @@ Report any issues on http://dev.rails-engines.org. Thanks!
     
     # Patch the default plugin testing task to have setup_plugin_fixtures as a prerequisite
     Rake::Task[&quot;test:plugins&quot;].prerequisites &lt;&lt; &quot;test:plugins:setup_plugin_fixtures&quot;
-  end  
-end
\ No newline at end of file
+  end
+end</diff>
      <filename>vendor/plugins/engines/tasks/engines.rake</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>vendor/plugins/engines/lib/engines/rails_extensions/active_record.rb</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>6aefe20fca67f5e43685d0af6ef39a0118d50f45</id>
    </parent>
  </parents>
  <author>
    <name>Eric Kidd</name>
    <email>git@randomhacks.net</email>
  </author>
  <url>http://github.com/emk/mephisto/commit/1cda19ef5d618a9e81adc03112f858a9ddb86a35</url>
  <id>1cda19ef5d618a9e81adc03112f858a9ddb86a35</id>
  <committed-date>2008-12-04T06:37:51-08:00</committed-date>
  <authored-date>2008-12-04T06:37:25-08:00</authored-date>
  <message>Upgrade to latest development version of engines

This is commit 4cb49974cc62e6e89c15b03d08bab3ba07f7213a from the
git://github.com/lazyatom/engines.git repository.  The released
version of engines doesn't seem to support Rails 2.2 at the
moment.

Note that the unit tests still won't run.</message>
  <tree>24447677b22df9aa9ca3299d8ffae4e317508305</tree>
  <committer>
    <name>Eric Kidd</name>
    <email>git@randomhacks.net</email>
  </committer>
</commit>
