<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>actionpack/lib/action_controller/new_base/compatibility.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -23,14 +23,14 @@ task :default =&gt; [ :test ]
 # Run the unit tests
 
 desc &quot;Run all unit tests&quot;
-task :test =&gt; [:test_action_pack, :test_active_record_integration]
+task :test =&gt; [:test_action_pack, :test_active_record_integration, :test_new_base]
 
 Rake::TestTask.new(:test_action_pack) do |t|
   t.libs &lt;&lt; &quot;test&quot;
 
   # make sure we include the tests in alphabetical order as on some systems
   # this will not happen automatically and the tests (as a whole) will error
-  t.test_files = Dir.glob( &quot;test/[cdft]*/**/*_test.rb&quot; ).sort
+  t.test_files = Dir.glob( &quot;test/{controller,dispatch,template}/**/*_test.rb&quot; ).sort
 
   t.verbose = true
   #t.warning = true
@@ -43,6 +43,13 @@ Rake::TestTask.new(:test_active_record_integration) do |t|
   t.verbose = true
 end
 
+desc 'New Controller Tests'
+Rake::TestTask.new(:test_new_base) do |t|
+  t.libs &lt;&lt; &quot;test&quot;
+  t.test_files = Dir.glob(&quot;test/{abstract_controller,new_base}/*_test.rb&quot;)
+  t.verbose = true
+end
+
 
 # Genereate the RDoc documentation
 </diff>
      <filename>actionpack/Rakefile</filename>
    </modified>
    <modified>
      <diff>@@ -50,6 +50,7 @@ module AbstractController
     end
     
     def _render_template(template, options)
+      # layout = options[:_layout].is_a?(ActionView::Template) ? options[:_layout] : _layout_for_name(options[:_layout])
       _action_view._render_template_with_layout(template, options[:_layout])
     end
         
@@ -67,10 +68,10 @@ module AbstractController
     
     def _default_layout(require_layout = false)
       if require_layout &amp;&amp; !_layout
-        raise ArgumentError, 
+        raise ArgumentError,
           &quot;There was no default layout for #{self.class} in #{view_paths.inspect}&quot;
       end
-        
+
       begin
         layout = _layout_for_name(_layout)
       rescue NameError =&gt; e</diff>
      <filename>actionpack/lib/action_controller/abstract/layouts.rb</filename>
    </modified>
    <modified>
      <diff>@@ -27,9 +27,11 @@ module AbstractController
     # 
     # :api: plugin
     def render_to_body(options = {})
+      options = {:_template_name =&gt; options} if options.is_a?(String)
       name = options[:_template_name] || action_name
       
       template = options[:_template] || view_paths.find_by_parts(name.to_s, {:formats =&gt; formats}, options[:_prefix])
+      
       _render_template(template, options)
     end
 </diff>
      <filename>actionpack/lib/action_controller/abstract/renderer.rb</filename>
    </modified>
    <modified>
      <diff>@@ -79,7 +79,7 @@ module ActionController
         run_callbacks :before_dispatch
         Routing::Routes.call(env)
       rescue Exception =&gt; exception
-        if controller ||= (::ApplicationController rescue Base)
+        if !env[&quot;rack.test&quot;] &amp;&amp; controller ||= (::ApplicationController rescue Base)
           controller.call_with_exception(env, exception).to_a
         else
           raise exception</diff>
      <filename>actionpack/lib/action_controller/dispatch/dispatcher.rb</filename>
    </modified>
    <modified>
      <diff>@@ -9,4 +9,4 @@ use lambda { ActionController::Base.session_store },
 
 use &quot;ActionDispatch::ParamsParser&quot;
 use &quot;Rack::MethodOverride&quot;
-use &quot;Rack::Head&quot;
+use &quot;Rack::Head&quot;
\ No newline at end of file</diff>
      <filename>actionpack/lib/action_controller/dispatch/middlewares.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,7 +1,8 @@
 module ActionController
-  autoload :AbstractBase, &quot;action_controller/new_base/base&quot;
-  autoload :HideActions,  &quot;action_controller/new_base/hide_actions&quot;
-  autoload :Layouts,      &quot;action_controller/new_base/layouts&quot;
-  autoload :Renderer,     &quot;action_controller/new_base/renderer&quot;
-  autoload :UrlFor,       &quot;action_controller/new_base/url_for&quot;
+  autoload :AbstractBase,         &quot;action_controller/new_base/base&quot;
+  autoload :HideActions,          &quot;action_controller/new_base/hide_actions&quot;
+  autoload :Layouts,              &quot;action_controller/new_base/layouts&quot;
+  autoload :Rails2Compatibility,  &quot;action_controller/new_base/compatibility&quot;
+  autoload :Renderer,             &quot;action_controller/new_base/renderer&quot;
+  autoload :UrlFor,               &quot;action_controller/new_base/url_for&quot;
 end
\ No newline at end of file</diff>
      <filename>actionpack/lib/action_controller/new_base.rb</filename>
    </modified>
    <modified>
      <diff>@@ -50,6 +50,8 @@ module ActionController
       @_request = ActionDispatch::Request.new(env)
       @_response = ActionDispatch::Response.new
       process(@_request.parameters[:action])
+      @_response.prepare!
+      self
     end
     
     # :api: private</diff>
      <filename>actionpack/lib/action_controller/new_base/base.rb</filename>
    </modified>
    <modified>
      <diff>@@ -58,11 +58,11 @@ module AbstractController
       end
 
       def rendering_to_body
-        render_to_body &quot;naked_render.erb&quot;
+        self.response_body = render_to_body :_template_name =&gt; &quot;naked_render.erb&quot;
       end
 
       def rendering_to_string
-        render_to_string &quot;naked_render.erb&quot;
+        self.response_body = render_to_string :_template_name =&gt; &quot;naked_render.erb&quot;
       end
     end
     
@@ -136,6 +136,11 @@ module AbstractController
     class WithLayouts &lt; PrefixedViews
       use Layouts
       
+      def self.inherited(klass)
+        klass._write_layout_method
+        super
+      end
+      
       private
       def self.layout(formats)
         begin
@@ -147,13 +152,9 @@ module AbstractController
           end
         end
       end
-      
-      def _layout
-        self.class.layout(formats)
-      end      
-      
+
       def render_to_body(options = {})
-        options[:_layout] = options[:layout] || _layout
+        options[:_layout] = options[:layout] || _default_layout
         super
       end  
     end
@@ -175,11 +176,6 @@ module AbstractController
         result = Me4.process(:index)
         assert_equal &quot;Me4 Enter : Hello from me4/index.erb : Exit&quot;, result.response_obj[:body]
       end
-      
-      test &quot;it can fall back to the application layout&quot; do
-        result = Me5.process(:index)
-        assert_equal &quot;Application Enter : Hello from me5/index.erb : Exit&quot;, result.response_obj[:body]        
-      end
     end
     
     # respond_to_action?(action_name)</diff>
      <filename>actionpack/test/abstract_controller/abstract_controller_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -8,7 +8,7 @@ module AbstractControllerTests
       use AbstractController::Renderer
       use AbstractController::Layouts
       
-      self.view_paths = [ActionView::FixtureTemplate::FixturePath.new(
+      self.view_paths = [ActionView::Template::FixturePath.new(
         &quot;layouts/hello.erb&quot;                     =&gt; &quot;With String &lt;%= yield %&gt;&quot;,
         &quot;layouts/hello_override.erb&quot;            =&gt; &quot;With Override &lt;%= yield %&gt;&quot;,
         &quot;layouts/abstract_controller_tests/layouts/with_string_implied_child.erb&quot; =&gt;</diff>
      <filename>actionpack/test/abstract_controller/layouts_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -755,6 +755,7 @@ class RenderTest &lt; ActionController::TestCase
     @request.host = &quot;www.nextangle.com&quot;
   end
 
+  # :ported:
   def test_simple_show
     get :hello_world
     assert_response 200
@@ -763,11 +764,13 @@ class RenderTest &lt; ActionController::TestCase
     assert_equal &quot;&lt;html&gt;Hello world!&lt;/html&gt;&quot;, @response.body
   end
 
+  # :ported:
   def test_renders_default_template_for_missing_action
     get :'hyphen-ated'
     assert_template 'test/hyphen-ated'
   end
 
+  # :ported:
   def test_render
     get :render_hello_world
     assert_template &quot;test/hello_world&quot;</diff>
      <filename>actionpack/test/controller/render_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,35 +1,104 @@
 module ActionView #:nodoc:
-  class FixtureTemplate &lt; Template
-    class FixturePath &lt; Template::Path
-      def initialize(hash = {})
-        @hash = {}
-        
-        hash.each do |k, v|
-          @hash[k.sub(/\.\w+$/, '')] = FixtureTemplate.new(v, k.split(&quot;/&quot;).last, self)
+class Template
+  class FixturePath &lt; Path
+    def initialize(hash = {}, options = {})
+      super(options)
+      @hash = hash
+    end
+    
+    def find_templates(name, details, prefix, partial)
+      if regexp = details_to_regexp(name, details, prefix, partial)
+        cached(regexp) do
+          templates = []
+          @hash.select { |k,v| k =~ regexp }.each do |path, source|
+            templates &lt;&lt; Template.new(source, path, *path_to_details(path))
+          end
+          templates
         end
-        
-        super(&quot;fixtures://root&quot;)
-      end
-      
-      def find_template(path)
-        @hash[path]
       end
     end
     
-    def initialize(body, *args)
-      @body = body
-      super(*args)
+  private
+  
+    def formats_regexp
+      @formats_regexp ||= begin
+        formats = Mime::SET.map { |m| m.symbol }
+        '(?:' + formats.map { |l| &quot;\\.#{Regexp.escape(l.to_s)}&quot; }.join('|') + ')?'
+      end
     end
     
-    def source
-      @body
+    def handler_regexp
+      e = TemplateHandlers.extensions.map{|h| &quot;\\.#{Regexp.escape(h.to_s)}&quot;}.join(&quot;|&quot;)
+      &quot;(?:#{e})?&quot;
     end
   
-  private
-  
-    def find_full_path(path, load_paths)
-      return '/', path
+    def details_to_regexp(name, details, prefix, partial)
+      path = &quot;&quot;
+      path &lt;&lt; &quot;#{prefix}/&quot; unless prefix.empty?
+      path &lt;&lt; (partial ? &quot;_#{name}&quot; : name)
+    
+      extensions = &quot;&quot;
+      [:locales, :formats].each do |k|
+        extensions &lt;&lt; if exts = details[k]
+          '(?:' + exts.map {|e| &quot;\\.#{Regexp.escape(e.to_s)}&quot;}.join('|') + ')?'
+        else
+          k == :formats ? formats_regexp : ''
+        end
+      end
+      
+      %r'#{Regexp.escape(path)}#{extensions}#{handler_regexp}'
+    end
+    
+    # TODO: fix me
+    # :api: plugin
+    def path_to_details(path)
+      # [:erb, :format =&gt; :html, :locale =&gt; :en, :partial =&gt; true/false]
+      if m = path.match(%r'(_)?[\w-]+(\.[\w-]+)*\.(\w+)$')
+        partial = m[1] == '_'
+        details = (m[2]||&quot;&quot;).split('.').reject { |e| e.empty? }
+        handler = Template.handler_class_for_extension(m[3])
+    
+        format  = Mime[details.last] &amp;&amp; details.pop.to_sym
+        locale  = details.last &amp;&amp; details.pop.to_sym
+        
+        return handler, :format =&gt; format, :locale =&gt; locale, :partial =&gt; partial
+      end
     end
-  
   end
+  
+  
+  # class FixtureTemplate &lt; Template
+  #   class FixturePath &lt; Template::Path
+  #     def initialize(hash = {})
+  #       @hash = {}
+  #       
+  #       hash.each do |k, v|
+  #         @hash[k.sub(/\.\w+$/, '')] = FixtureTemplate.new(v, k.split(&quot;/&quot;).last, self)
+  #       end
+  #       
+  #       super(&quot;fixtures://root&quot;)
+  #     end
+  #     
+  #     def find_template(path)
+  #       @hash[path]
+  #     end
+  #   end
+  #   
+  #   def initialize(body, *args)
+  #     @body = body
+  #     super(*args)
+  #   end
+  #   
+  #   def source
+  #     @body
+  #   end
+  # 
+  # private
+  # 
+  #   def find_full_path(path, load_paths)
+  #     return '/', path
+  #   end
+  # 
+  # end
+end
 end
\ No newline at end of file</diff>
      <filename>actionpack/test/lib/fixture_template.rb</filename>
    </modified>
    <modified>
      <diff>@@ -34,11 +34,11 @@ module HappyPath
     end
     
     test &quot;sets the content type&quot; do
-      assert_content_type Mime::HTML
+      assert_content_type &quot;text/html; charset=utf-8&quot;
     end
     
     test &quot;sets the content length&quot; do
-      assert_header &quot;Content-Length&quot;, 7
+      assert_header &quot;Content-Length&quot;, &quot;7&quot;
     end
         
   end
@@ -52,7 +52,7 @@ module HappyPath
     end
     
     test &quot;setting the body manually sets the content length&quot; do
-      assert_header &quot;Content-Length&quot;, 7
+      assert_header &quot;Content-Length&quot;, &quot;7&quot;
     end
   end
   
@@ -65,7 +65,7 @@ module HappyPath
     end
     
     test &quot;updating the response body updates the content length&quot; do
-      assert_header &quot;Content-Length&quot;, 8
+      assert_header &quot;Content-Length&quot;, &quot;8&quot;
     end
   end
 end</diff>
      <filename>actionpack/test/new_base/base_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,7 +5,7 @@ module RenderAction
   # This has no layout and it works
   class BasicController &lt; ActionController::Base2
     
-    self.view_paths = [ActionView::FixtureTemplate::FixturePath.new(
+    self.view_paths = [ActionView::Template::FixturePath.new(
       &quot;render_action/basic/hello_world.html.erb&quot; =&gt; &quot;Hello world!&quot;
     )]
     
@@ -129,7 +129,7 @@ module RenderActionWithApplicationLayout
 
   class BasicController &lt; ::ApplicationController
     # Set the view path to an application view structure with layouts
-    self.view_paths = self.view_paths = [ActionView::FixtureTemplate::FixturePath.new(
+    self.view_paths = self.view_paths = [ActionView::Template::FixturePath.new(
       &quot;render_action_with_application_layout/basic/hello_world.html.erb&quot; =&gt; &quot;Hello World!&quot;,
       &quot;layouts/application.html.erb&quot;                                     =&gt; &quot;OHAI &lt;%= yield %&gt; KTHXBAI&quot;,
       &quot;layouts/greetings.html.erb&quot;                                       =&gt; &quot;Greetings &lt;%= yield %&gt; Bai&quot;
@@ -204,7 +204,7 @@ end
 module RenderActionWithControllerLayout
   
   class BasicController &lt; ActionController::Base2
-    self.view_paths = self.view_paths = [ActionView::FixtureTemplate::FixturePath.new(
+    self.view_paths = self.view_paths = [ActionView::Template::FixturePath.new(
       &quot;render_action_with_controller_layout/basic/hello_world.html.erb&quot; =&gt; &quot;Hello World!&quot;,
       &quot;layouts/render_action_with_controller_layout/basic.html.erb&quot;     =&gt; &quot;With Controller Layout! &lt;%= yield %&gt; KTHXBAI&quot;
     )]
@@ -267,7 +267,7 @@ end
 module RenderActionWithBothLayouts
   
   class BasicController &lt; ActionController::Base2
-    self.view_paths = [ActionView::FixtureTemplate::FixturePath.new({
+    self.view_paths = [ActionView::Template::FixturePath.new({
       &quot;render_action_with_both_layouts/basic/hello_world.html.erb&quot; =&gt; &quot;Hello World!&quot;,
       &quot;layouts/application.html.erb&quot;                                =&gt; &quot;OHAI &lt;%= yield %&gt; KTHXBAI&quot;,
       &quot;layouts/render_action_with_both_layouts/basic.html.erb&quot;      =&gt; &quot;With Controller Layout! &lt;%= yield %&gt; KTHXBAI&quot;</diff>
      <filename>actionpack/test/new_base/render_action_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,16 +1,28 @@
 require File.join(File.expand_path(File.dirname(__FILE__)), &quot;test_helper&quot;)
 
-module HappyPath
-  
-  class RenderImplicitActionController &lt; ActionController::Base2
-    # No actions yet, they are implicit
+module RenderImplicitAction
+  class SimpleController &lt; ::ApplicationController
+    self.view_paths = [ActionView::Template::FixturePath.new(
+      &quot;render_implicit_action/simple/hello_world.html.erb&quot; =&gt; &quot;Hello world!&quot;,
+      &quot;render_implicit_action/simple/hyphen-ated.html.erb&quot; =&gt; &quot;Hello hyphen-ated&quot;
+    )]
+    
+    def hello_world() end
   end
   
-  class TestRendersActionImplicitly &lt; SimpleRouteCase
-  
-    test &quot;renders action implicitly&quot; do
-      assert true
-    end
+  class TestImplicitRender &lt; SimpleRouteCase
+    describe &quot;render a simple action with new explicit call to render&quot;
+    
+    get &quot;/render_implicit_action/simple/hello_world&quot;
+    assert_body   &quot;Hello world!&quot;
+    assert_status 200
+  end
   
+  class TestImplicitWithSpecialCharactersRender &lt; SimpleRouteCase
+    describe &quot;render an action with a missing method and has special characters&quot;
+    
+    get &quot;/render_implicit_action/simple/hyphen-ated&quot;
+    assert_body   &quot;Hello hyphen-ated!&quot;
+    assert_status 200
   end
 end
\ No newline at end of file</diff>
      <filename>actionpack/test/new_base/render_implicit_action_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,7 +3,7 @@ require File.join(File.expand_path(File.dirname(__FILE__)), &quot;test_helper&quot;)
 module ControllerLayouts
   class ImplicitController &lt; ::ApplicationController
     
-    self.view_paths = [ActionView::FixtureTemplate::FixturePath.new(
+    self.view_paths = [ActionView::Template::FixturePath.new(
       &quot;layouts/application.html.erb&quot; =&gt; &quot;OMG &lt;%= yield %&gt; KTHXBAI&quot;,
       &quot;basic.html.erb&quot; =&gt; &quot;Hello world!&quot;
     )]
@@ -23,7 +23,7 @@ module ControllerLayouts
   
   class ImplicitNameController &lt; ::ApplicationController
     
-    self.view_paths = [ActionView::FixtureTemplate::FixturePath.new(
+    self.view_paths = [ActionView::Template::FixturePath.new(
       &quot;layouts/controller_layouts/implicit_name.html.erb&quot; =&gt; &quot;OMGIMPLICIT &lt;%= yield %&gt; KTHXBAI&quot;,
       &quot;basic.html.erb&quot; =&gt; &quot;Hello world!&quot;
     )]</diff>
      <filename>actionpack/test/new_base/render_layout_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -4,7 +4,7 @@ module HappyPath
   
   class RenderTemplateWithoutLayoutController &lt; ActionController::Base2
     
-    self.view_paths = [ActionView::FixtureTemplate::FixturePath.new(
+    self.view_paths = [ActionView::Template::FixturePath.new(
       &quot;test/basic.html.erb&quot; =&gt; &quot;Hello from basic.html.erb&quot;,
       &quot;shared.html.erb&quot;     =&gt; &quot;Elastica&quot;
     )]
@@ -13,10 +13,6 @@ module HappyPath
       render :template =&gt; &quot;test/basic&quot;
     end
 
-    def render_hello_world_with_forward_slash
-      render :template =&gt; &quot;/test/basic&quot;
-    end
-
     def render_template_in_top_directory
       render :template =&gt; 'shared'
     end
@@ -34,14 +30,6 @@ module HappyPath
     assert_status 200
   end
   
-  class TestTemplateRenderWithForwardSlash &lt; SimpleRouteCase
-    describe &quot;rendering a normal template with full path starting with a leading slash&quot;
-    
-    get &quot;/happy_path/render_template_without_layout/render_hello_world_with_forward_slash&quot;
-    assert_body   &quot;Hello from basic.html.erb&quot;
-    assert_status 200
-  end
-  
   class TestTemplateRenderInTopDirectory &lt; SimpleRouteCase
     describe &quot;rendering a template not in a subdirectory&quot;
     
@@ -60,7 +48,7 @@ module HappyPath
     
   class RenderTemplateWithLayoutController &lt; ::ApplicationController
     
-    self.view_paths = [ActionView::FixtureTemplate::FixturePath.new(
+    self.view_paths = [ActionView::Template::FixturePath.new(
       &quot;test/basic.html.erb&quot;          =&gt; &quot;Hello from basic.html.erb&quot;,
       &quot;shared.html.erb&quot;              =&gt; &quot;Elastica&quot;,
       &quot;layouts/application.html.erb&quot; =&gt; &quot;&lt;%= yield %&gt;, I'm here!&quot;,
@@ -127,7 +115,26 @@ module HappyPath
     assert_body   &quot;Hello from basic.html.erb, I wish thee well.&quot;
     assert_status 200
   end
-  
-  
 
+end
+
+module Compatibility
+  class RenderTemplateWithoutLayoutController &lt; ActionController::CompatibleBase2
+    self.view_paths = [ActionView::Template::FixturePath.new(
+      &quot;test/basic.html.erb&quot; =&gt; &quot;Hello from basic.html.erb&quot;,
+      &quot;shared.html.erb&quot;     =&gt; &quot;Elastica&quot;
+    )]
+    
+    def render_hello_world_with_forward_slash
+      render :template =&gt; &quot;/test/basic&quot;
+    end
+  end
+  
+  class TestTemplateRenderWithForwardSlash &lt; SimpleRouteCase
+    describe &quot;rendering a normal template with full path starting with a leading slash&quot;
+    
+    get &quot;/compatibility/render_template_without_layout/render_hello_world_with_forward_slash&quot;
+    assert_body   &quot;Hello from basic.html.erb&quot;
+    assert_status 200
+  end
 end
\ No newline at end of file</diff>
      <filename>actionpack/test/new_base/render_template_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -6,7 +6,7 @@ end
 module HappyPath
   
   class RenderTextWithoutLayoutsController &lt; ActionController::Base2
-    self.view_paths = [ActionView::FixtureTemplate::FixturePath.new]
+    self.view_paths = [ActionView::Template::FixturePath.new]
     
     def render_hello_world
       render :text =&gt; &quot;hello david&quot;
@@ -14,7 +14,7 @@ module HappyPath
   end
   
   class RenderTextWithLayoutsController &lt; ::ApplicationController
-    self.view_paths = [ActionView::FixtureTemplate::FixturePath.new(
+    self.view_paths = [ActionView::Template::FixturePath.new(
       &quot;layouts/application.html.erb&quot; =&gt; &quot;&lt;%= yield %&gt;, I'm here!&quot;,
       &quot;layouts/greetings.html.erb&quot;   =&gt; &quot;&lt;%= yield %&gt;, I wish thee well.&quot;
     )]    </diff>
      <filename>actionpack/test/new_base/render_text_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -24,6 +24,14 @@ require 'pp' # require 'pp' early to prevent hidden_methods from not picking up
 require 'rubygems'
 require 'rack/test'
 
+module Rails
+  def self.env
+    x = Object.new
+    def x.test?() true end
+    x
+  end
+end
+
 module ActionController
   class Base2 &lt; AbstractBase
     use AbstractController::Callbacks
@@ -54,6 +62,10 @@ module ActionController
         
     CORE_METHODS = self.public_instance_methods
   end
+  
+  class CompatibleBase2 &lt; Base2
+    use ActionController::Rails2Compatibility
+  end
 end
 
 # Temporary base class
@@ -91,7 +103,7 @@ class Rack::TestCase &lt; ActiveSupport::TestCase
   end
   
   def assert_body(body)
-    assert_equal [body], last_response.body
+    assert_equal body, last_response.body
   end
   
   def self.assert_body(body)</diff>
      <filename>actionpack/test/new_base/test_helper.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>34509777fd375e5bc529f21ca66cf63263c2cf64</id>
    </parent>
  </parents>
  <author>
    <name>Yehuda Katz + Carl Lerche</name>
    <login></login>
    <email>ykatz+clerche@engineyard.com</email>
  </author>
  <url>http://github.com/rails/rails/commit/8a4e77b4200946ba4ed42fe5927a7400a846063a</url>
  <id>8a4e77b4200946ba4ed42fe5927a7400a846063a</id>
  <committed-date>2009-05-01T17:31:01-07:00</committed-date>
  <authored-date>2009-04-27T18:21:26-07:00</authored-date>
  <message>OMG, a lot of work</message>
  <tree>4d61ebd026f32bd9af32c93f93b3071232b1d8ee</tree>
  <committer>
    <name>Yehuda Katz + Carl Lerche</name>
    <login></login>
    <email>ykatz+clerche@engineyard.com</email>
  </committer>
</commit>
