<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>railties/lib/rails/rack/metal.rb</filename>
    </added>
    <added>
      <filename>railties/lib/rails_generator/generators/components/metal/USAGE</filename>
    </added>
    <added>
      <filename>railties/lib/rails_generator/generators/components/metal/metal_generator.rb</filename>
    </added>
    <added>
      <filename>railties/lib/rails_generator/generators/components/metal/templates/metal.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -155,6 +155,8 @@ module Rails
       initialize_framework_settings
       initialize_framework_views
 
+      initialize_metal
+
       add_support_load_paths
 
       load_gems
@@ -533,6 +535,12 @@ Run `rake gems:install` to install the missing gems.
       end
     end
 
+    def initialize_metal
+      Dir[&quot;#{configuration.root_path}/app/metal/*.rb&quot;].each do |file|
+        configuration.middleware.use(File.basename(file, '.rb').camelize)
+      end
+    end
+
     # Initializes framework-specific settings for each of the loaded frameworks
     # (Configuration#frameworks). The available settings map to the accessors
     # on each of the corresponding Base classes.
@@ -915,6 +923,7 @@ Run `rake gems:install` to install the missing gems.
         # Followed by the standard includes.
         paths.concat %w(
           app
+          app/metal
           app/models
           app/controllers
           app/helpers
@@ -933,6 +942,7 @@ Run `rake gems:install` to install the missing gems.
 
       def default_eager_load_paths
         %w(
+          app/metal
           app/models
           app/controllers
           app/helpers</diff>
      <filename>railties/lib/initializer.rb</filename>
    </modified>
    <modified>
      <diff>@@ -2,6 +2,7 @@ module Rails
   module Rack
     autoload :Debugger, &quot;rails/rack/debugger&quot;
     autoload :Logger, &quot;rails/rack/logger&quot;
+    autoload :Metal, &quot;rails/rack/metal&quot;
     autoload :Static, &quot;rails/rack/static&quot;
   end
 end</diff>
      <filename>railties/lib/rails/rack.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>c4023cbe206415cf3ca1ca92cd9980a4aa4aed00</id>
    </parent>
  </parents>
  <author>
    <name>Joshua Peek</name>
    <login>josh</login>
    <email>josh@joshpeek.com</email>
  </author>
  <url>http://github.com/rails/rails/commit/8c3a54366435eebc2c8aa63b63e1349ce74a7b38</url>
  <id>8c3a54366435eebc2c8aa63b63e1349ce74a7b38</id>
  <committed-date>2008-12-16T11:15:06-08:00</committed-date>
  <authored-date>2008-12-16T11:11:51-08:00</authored-date>
  <message>Introduce Rails Metal

  # app/metal/poller.rb
  class Poller &lt; Rails::Rack::Metal
    def call(env)
      if env[&quot;PATH_INFO&quot;] =~ /^\/poller/
        [200, {&quot;Content-Type&quot; =&gt; &quot;application/json&quot;}, Message.recent.to_json]
      else
        super
      end
    end
  end

* There is a generator to help you get started
    `script/generate metal poller`

* Also, metal bits can be ran standalone with rackup
    `rackup app/metal/poller.rb`</message>
  <tree>547451f6c639994a948f8cba6505022458aedeac</tree>
  <committer>
    <name>Joshua Peek</name>
    <login>josh</login>
    <email>josh@joshpeek.com</email>
  </committer>
</commit>
