<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <filename>.gitignore</filename>
    </modified>
    <modified>
      <filename>CONTRIBUTING</filename>
    </modified>
    <modified>
      <filename>TODO</filename>
    </modified>
    <modified>
      <filename>assets/book.css</filename>
    </modified>
    <modified>
      <filename>book-order.txt</filename>
    </modified>
    <modified>
      <filename>book/.gitignore</filename>
    </modified>
    <modified>
      <filename>book/Configuration.markdown</filename>
    </modified>
    <modified>
      <filename>book/Contributing.markdown</filename>
    </modified>
    <modified>
      <filename>book/Deployment.markdown</filename>
    </modified>
    <modified>
      <filename>book/ErrorHandling.markdown</filename>
    </modified>
    <modified>
      <filename>book/Filters.markdown</filename>
    </modified>
    <modified>
      <filename>book/Handlers.markdown</filename>
    </modified>
    <modified>
      <filename>book/Helpers.markdown</filename>
    </modified>
    <modified>
      <filename>book/Introduction.markdown</filename>
    </modified>
    <modified>
      <filename>book/Models.markdown</filename>
    </modified>
    <modified>
      <diff>@@ -1,8 +1,30 @@
 Rack Middleware
 ===============
 
-&quot;use&quot;
------
+Sinatra rides on [Rack][rack], a minimal standard interface for Ruby web frameworks. One of Rack&#8217;s most interesting capabilities for application developers is support for &#8220;middleware&#8221; &#8212; components that sit between the server and your application monitoring and/or manipulating the HTTP request/response to provide various types of common functionality.
 
-// TODO: What useful rack middleware is out there?  Is there any 3rd party stuff available outside of the builtin ones?
+Sinatra makes building Rack middleware pipelines a cinch via a top-level &quot;use&quot; method:
+
+	require 'sinatra'
+	require 'my_custom_middleware'
+
+	use Rack::Lint
+	use MyCustomMiddleware
+
+	get '/hello' do
+	    'Hello World'
+	end
+
+
+The semantics of &quot;use&quot; are identical to those defined for the [Rack::Builder][rack_builder]  DSL (most frequently used from rackup files). For example, the use  method accepts multiple/variable args as well as blocks:
+
+	use Rack::Auth::Basic do |username, password|
+	   username == 'admin' &amp;&amp; password == 'secret'
+	end
+
+
+Rack is distributed with a variety of standard middleware for logging, debugging, URL routing, authentication, and session handling. Sinatra uses many of of these components automatically based on configuration so you typically don&#8217;t have to use them explicitly.
+
+[rack]: http://rack.rubyforge.org/
+[rack_builder]: http://rack.rubyforge.org/doc/classes/Rack/Builder.html
 </diff>
      <filename>book/RackMiddleware.markdown</filename>
    </modified>
    <modified>
      <filename>book/Routes.markdown</filename>
    </modified>
    <modified>
      <filename>book/TOC.markdown</filename>
    </modified>
    <modified>
      <filename>book/Views.markdown</filename>
    </modified>
    <modified>
      <filename>images/.gitignore</filename>
    </modified>
    <modified>
      <filename>sinatra-book.thor</filename>
    </modified>
    <modified>
      <filename>source/.gitignore</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>94751c02e682085b8d22beb081662b5f06bb1af9</id>
    </parent>
  </parents>
  <author>
    <name>root</name>
    <email>taylorrf@gmail.com</email>
  </author>
  <url>http://github.com/cschneid/sinatra-book/commit/afb57f831877f7113acd5690a8e059c89c49df8b</url>
  <id>afb57f831877f7113acd5690a8e059c89c49df8b</id>
  <committed-date>2008-12-28T08:05:37-08:00</committed-date>
  <authored-date>2008-12-27T20:02:22-08:00</authored-date>
  <message>add content for RackMiddleware

Signed-off-by: Chris Schneider &lt;chris@christopher-schneider.com&gt;</message>
  <tree>0b05d5fb34f85439928e3707bff6b66274563965</tree>
  <committer>
    <name>Chris Schneider</name>
    <email>chris@christopher-schneider.com</email>
  </committer>
</commit>
