<?xml version="1.0" encoding="UTF-8"?>
<commits type="array">
  <commit>
    <parents type="array">
      <parent>
        <id>f4b11b967fc7f412a1885b0ab7953cbfc901edb6</id>
      </parent>
    </parents>
    <author>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </author>
    <url>http://github.com/bmizerany/sinatra/commit/f14d6218746cc0032e2bad429220327554a963eb</url>
    <id>f14d6218746cc0032e2bad429220327554a963eb</id>
    <committed-date>2009-06-05T21:58:56-07:00</committed-date>
    <authored-date>2009-06-05T21:58:00-07:00</authored-date>
    <message>Obsolete all deprecations: remove sinatra/compat.rb module</message>
    <tree>2c28e840f2617c1ec828b3bfb95a359ae8e9051a</tree>
    <committer>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>f54272065d367673583a5efdc2523c15e090625e</id>
      </parent>
    </parents>
    <author>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </author>
    <url>http://github.com/bmizerany/sinatra/commit/ccd2e9d567976bf69ba17b90afeaab275f3d7ead</url>
    <id>ccd2e9d567976bf69ba17b90afeaab275f3d7ead</id>
    <committed-date>2009-03-26T07:17:11-07:00</committed-date>
    <authored-date>2009-03-24T02:56:30-07:00</authored-date>
    <message>Rename showexceptions.rb for parity with Rack</message>
    <tree>9ddaae8e038fd9c0bec91bc330bee1cb48e6b7f6</tree>
    <committer>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>60bdca965f93987f21d3bb4ff063c647b28e65c9</id>
      </parent>
    </parents>
    <author>
      <name>Matte Noble</name>
      <email>me@mattenoble.com</email>
    </author>
    <url>http://github.com/bmizerany/sinatra/commit/07bd1495ed9dd2f76d3f2801ebef13c7ee973204</url>
    <id>07bd1495ed9dd2f76d3f2801ebef13c7ee973204</id>
    <committed-date>2009-03-26T07:15:28-07:00</committed-date>
    <authored-date>2009-03-12T09:36:34-07:00</authored-date>
    <message>Awesome ShowException template</message>
    <tree>f9b6c8fc766a4f22c8dcff59436a9faf4b8cf62f</tree>
    <committer>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>eec7d2141685b8a44fc202a58f384bfad6c3d435</id>
      </parent>
    </parents>
    <author>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </author>
    <url>http://github.com/bmizerany/sinatra/commit/0324732179f8b732abd1790dabce468b3894d756</url>
    <id>0324732179f8b732abd1790dabce468b3894d756</id>
    <committed-date>2009-01-17T17:10:10-08:00</committed-date>
    <authored-date>2009-01-16T18:45:22-08:00</authored-date>
    <message>Minor tweaks to use_in_file_templates! auto loading

1. Don't add the sinatra lib dir to $: on each reload.
2. Don't remove sinatra.rb from $LOADED_FEATURES unless we're
   reloading.</message>
    <tree>a5018db2cd6baf6153798885943c97850483cdb8</tree>
    <committer>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>15863661c33f2ba9bc03a6df325e97c285943152</id>
      </parent>
    </parents>
    <author>
      <name>Blake Mizerany</name>
      <email>blake.mizerany@gmail.com</email>
    </author>
    <url>http://github.com/bmizerany/sinatra/commit/eec7d2141685b8a44fc202a58f384bfad6c3d435</url>
    <id>eec7d2141685b8a44fc202a58f384bfad6c3d435</id>
    <committed-date>2009-01-17T17:05:17-08:00</committed-date>
    <authored-date>2009-01-16T17:01:41-08:00</authored-date>
    <message>In-file-templates are automaticly loaded for you.

Sinatra will now load you in-file-templates from the file
that required sinatra.

If you need to use in-file-templates outside this you will need
to explicitly call use_in_file_templates! in that file.</message>
    <tree>3760c14705d0b32d632cb735e7df6d96fb4d5eb6</tree>
    <committer>
      <name>Blake Mizerany</name>
      <email>blake.mizerany@gmail.com</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>c52727f4830004ce4e5aaa588d25d6f486ab06f1</id>
      </parent>
    </parents>
    <author>
      <name>Adam Wiggins</name>
      <email>adam@heroku.com</email>
    </author>
    <url>http://github.com/bmizerany/sinatra/commit/9482a913a109e70e8732af65588e077108ed7055</url>
    <id>9482a913a109e70e8732af65588e077108ed7055</id>
    <committed-date>2009-01-14T02:33:16-08:00</committed-date>
    <authored-date>2009-01-14T02:33:16-08:00</authored-date>
    <message>add lib dir to load path, for backward compatibility</message>
    <tree>0f4a8265592de75bfc6a4c9152756aabe2ffd153</tree>
    <committer>
      <name>Adam Wiggins</name>
      <email>adam@heroku.com</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>d25e0208800e2fd69522e6b08e909c9c8d746b83</id>
      </parent>
    </parents>
    <author>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </author>
    <url>http://github.com/bmizerany/sinatra/commit/a734cf38ac0e7ddee437c8d273de50f2a4053339</url>
    <id>a734cf38ac0e7ddee437c8d273de50f2a4053339</id>
    <committed-date>2008-12-20T18:45:28-08:00</committed-date>
    <authored-date>2008-12-13T13:06:02-08:00</authored-date>
    <message>I knew I shoulda taken that left turn at Hoboken

This is a fairly large reworking of Sinatra's innards. Although
most of the internal implementation has been modified, it
provides the same basic feature set and is meant to be compatible
with Sinatra 0.3.2.

* The Event and EventContext classes have been removed. Sinatra
  applications are now defined within the class context of a
  Sinatra::Base subclass; each request is processed within a new
  instance.

* Sinatra::Base can be used as a base class for multiple
  Rack applications within a single process and can be used as
  Rack middleware.

* The routing and result type processing implementation has been
  simplified and enhanced a bit. There's a new route conditions
  system for things like :agent/:host matching and a request
  level #pass method has been added to allow an event handler to
  exit immediately, passing control to the next matching route.

* Regular expressions may now be used in route patterns. Captures
  are available as an array from &quot;params[:captures]&quot;.

* The #body helper method now takes a block. The block is not
  evaluated until an attempt is made to read the body.

* Options are now dynamically generated class attributes on the
  Sinatra::Base subclass (instead of OpenStruct); options are
  inherited by subclasses and may be overridden up the
  inheritance hierarchy. The Base.set manages all option related
  stuff.

* The application file (app_file) detection heuristics are bit
  more sane now. This fixes some bugs with reloading and
  public/views directory detection. All thin / passenger issues
  of these type should be better now.

* Error mappings are now split into to distinct layers: exception
  mappings and custom error pages. Exception mappings are registered
  with 'error(Exception)' and are run only when the app raises an
  exception. Custom error pages are registered with error(status_code)
  and are run any time the response has the status code specified.
  It's also possible to register an error page for a range of status
  codes: 'error(500..599)'.

* The spec and unit testing extensions have been modified to take
  advantage of the ability to have multiple Sinatra applications.
  The Sinatra::Test module must be included within the TestCase
  in order to take advantage of these methods (unless the
  'sinatra/compat' library has been required).

* Rebuilt specs from scratch for better coverage and
  organization. Sinatra 3.2 unit tests have been retained
  under ./compat to ensure a baseline level of compatibility with
  previous versions; use the 'rake compat' task to run these.

A large number of existing Sinatra idioms have been deprecated but
continue to be supported through the 'sinatra/compat' library.

* The &quot;set_option&quot; and &quot;set_options&quot; methods have been deprecated
  due to redundancy; use &quot;set&quot;.

* The &quot;env&quot; option (Sinatra::Base.env) has been renamed to &quot;environment&quot;
  and deprecated because it's too easy to confuse with the request-level
  Rack environment Hash (Sinatra::Base#env).

* The request level &quot;stop&quot; method has been renamed &quot;halt&quot; and
  deprecated. This is for consistency with `throw :halt`.

* The request level &quot;entity_tag&quot; method has been renamed &quot;etag&quot; and
  deprecated. Both versions were previously supported.

* The request level &quot;headers&quot; method has been deprecated. Use
  response['Header-Name'] to access and modify response headers.

* Sinatra.application is deprecated. Use Sinatra::Application instead.

* Setting Sinatra.application = nil to reset an application is
  deprecated. You shouldn't have to reset objects anymore.

* The Sinatra.default_options Hash is deprecated. Modifying this object now
  results in &quot;set(key, value)&quot; invocations on the Sinatra::Base
  subclass.

* The &quot;body.to_result&quot; convention has been deprecated.

* The ServerError exception has been deprecated. Any Exception is now
  considered a ServerError.</message>
    <tree>9e373aedfdc65188ee38f703c73decf8882ffec6</tree>
    <committer>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>eefc3d3b20c14ac992d598e5ef2bc4a66d495f2b</id>
      </parent>
    </parents>
    <author>
      <name>Erik Kastner</name>
      <email>kastner@gmail.com</email>
    </author>
    <url>http://github.com/bmizerany/sinatra/commit/d25e0208800e2fd69522e6b08e909c9c8d746b83</url>
    <id>d25e0208800e2fd69522e6b08e909c9c8d746b83</id>
    <committed-date>2008-12-08T23:23:55-08:00</committed-date>
    <authored-date>2008-12-04T18:59:41-08:00</authored-date>
    <message>mirroring Rack::Mime::MIME_TYPES to Rack::File::MIME_TYPES to make sinatra compatable with the master/0.5 branchs of rack</message>
    <tree>2474ad1b5735035ea7060141023bfcc6f6a222b5</tree>
    <committer>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>95aca7612e30e284a5e6eb187740e2a79cdaf3f9</id>
      </parent>
    </parents>
    <author>
      <name>Ben Bleything</name>
      <email>ben@bleything.net</email>
    </author>
    <url>http://github.com/bmizerany/sinatra/commit/eefc3d3b20c14ac992d598e5ef2bc4a66d495f2b</url>
    <id>eefc3d3b20c14ac992d598e5ef2bc4a66d495f2b</id>
    <committed-date>2008-11-30T20:51:49-08:00</committed-date>
    <authored-date>2008-11-30T16:16:42-08:00</authored-date>
    <message>Return the correct status code when a NotFound is raised</message>
    <tree>449916c062911ba555a4fa5bcfbb0ccc13631824</tree>
    <committer>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>971a18525a01101a28218ebd08b183f9a15f60e6</id>
      </parent>
      <parent>
        <id>c08fbaf424caec5f20fca78e5e3bb4a997be8acc</id>
      </parent>
    </parents>
    <author>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </author>
    <url>http://github.com/bmizerany/sinatra/commit/18723bb8af047332c0a6a378205eaf872005a064</url>
    <id>18723bb8af047332c0a6a378205eaf872005a064</id>
    <committed-date>2008-11-17T03:09:58-08:00</committed-date>
    <authored-date>2008-11-17T03:09:58-08:00</authored-date>
    <message>merge RACK_ENV and exception logging from bmizerany/master</message>
    <tree>5aed704920d10b1c85ab82ef85d9220064b59818</tree>
    <committer>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>33cbef5b6bc5f6de4b23b6255c07a147be2d11ac</id>
      </parent>
    </parents>
    <author>
      <name>bmizerany</name>
      <email>blake.mizerany@gmail.com</email>
    </author>
    <url>http://github.com/bmizerany/sinatra/commit/c08fbaf424caec5f20fca78e5e3bb4a997be8acc</url>
    <id>c08fbaf424caec5f20fca78e5e3bb4a997be8acc</id>
    <committed-date>2008-11-13T14:51:14-08:00</committed-date>
    <authored-date>2008-11-13T14:51:14-08:00</authored-date>
    <message>Don't use rescue when there is a cleaner way</message>
    <tree>3673657855b586b3ff7896fe06fc58f7656cc1f5</tree>
    <committer>
      <name>bmizerany</name>
      <email>blake.mizerany@gmail.com</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>7b20242aca9ae62d1eb79479727484e6401d4f7d</id>
      </parent>
    </parents>
    <author>
      <name>bmizerany</name>
      <email>blake.mizerany@gmail.com</email>
    </author>
    <url>http://github.com/bmizerany/sinatra/commit/33cbef5b6bc5f6de4b23b6255c07a147be2d11ac</url>
    <id>33cbef5b6bc5f6de4b23b6255c07a147be2d11ac</id>
    <committed-date>2008-11-12T15:55:32-08:00</committed-date>
    <authored-date>2008-11-12T15:55:32-08:00</authored-date>
    <message>Respect the RACK_ENV that thin gives

See: http://github.com/macournoyer/thin/commit/1e90d63f9139f6bc5dc7624ef07076bedcbb0bb3</message>
    <tree>99d0a7e3ca532712c24fe24426e5969bb7f7d743</tree>
    <committer>
      <name>bmizerany</name>
      <email>blake.mizerany@gmail.com</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>703462304c01868b1c80018a2d60b5e83a099c17</id>
      </parent>
    </parents>
    <author>
      <name>bmizerany</name>
      <email>blake.mizerany@gmail.com</email>
    </author>
    <url>http://github.com/bmizerany/sinatra/commit/7b20242aca9ae62d1eb79479727484e6401d4f7d</url>
    <id>7b20242aca9ae62d1eb79479727484e6401d4f7d</id>
    <committed-date>2008-11-12T14:53:29-08:00</committed-date>
    <authored-date>2008-11-12T14:18:35-08:00</authored-date>
    <message>Logging exceptions to env['rack.errors']</message>
    <tree>1f1e3aa8cd80e679198dac577f9ba058fe0e7d4c</tree>
    <committer>
      <name>bmizerany</name>
      <email>blake.mizerany@gmail.com</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>91d453f33b241cc160231e499c482bacbfffa131</id>
      </parent>
    </parents>
    <author>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </author>
    <url>http://github.com/bmizerany/sinatra/commit/971a18525a01101a28218ebd08b183f9a15f60e6</url>
    <id>971a18525a01101a28218ebd08b183f9a15f60e6</id>
    <committed-date>2008-11-11T09:10:12-08:00</committed-date>
    <authored-date>2008-11-11T09:10:12-08:00</authored-date>
    <message>fix use_in_file_templates! on windows

We were splitting on &quot;:&quot; and grabbing the first element
returned. i.e., the drive label.</message>
    <tree>5a15256a095c55c8432dbffd59bf2e6ba730e22b</tree>
    <committer>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>68d76aa504a629e112caef13526951696e615ad4</id>
      </parent>
      <parent>
        <id>703462304c01868b1c80018a2d60b5e83a099c17</id>
      </parent>
    </parents>
    <author>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </author>
    <url>http://github.com/bmizerany/sinatra/commit/91d453f33b241cc160231e499c482bacbfffa131</url>
    <id>91d453f33b241cc160231e499c482bacbfffa131</id>
    <committed-date>2008-11-11T09:01:57-08:00</committed-date>
    <authored-date>2008-11-11T09:01:57-08:00</authored-date>
    <message>merge bmizerany/master</message>
    <tree>d58e14954c130cfcedbf3a26f84c5916c17481f5</tree>
    <committer>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>d389d27e1f5be58abfb4b0daa7c25920113e1b68</id>
      </parent>
    </parents>
    <author>
      <name>bmizerany</name>
      <email>blake.mizerany@gmail.com</email>
    </author>
    <url>http://github.com/bmizerany/sinatra/commit/703462304c01868b1c80018a2d60b5e83a099c17</url>
    <id>703462304c01868b1c80018a2d60b5e83a099c17</id>
    <committed-date>2008-11-11T07:45:56-08:00</committed-date>
    <authored-date>2008-11-11T07:45:56-08:00</authored-date>
    <message>FIX:  use_in_file_templates should split on __END__</message>
    <tree>145a4dc1f67773917a47dfaee9287c030f3a88a0</tree>
    <committer>
      <name>bmizerany</name>
      <email>blake.mizerany@gmail.com</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>b03d7171d9103974904d85424351883fb2357614</id>
      </parent>
    </parents>
    <author>
      <name>Igal Koshevoy</name>
      <email>igal@pragmaticraft.com</email>
    </author>
    <url>http://github.com/bmizerany/sinatra/commit/68d76aa504a629e112caef13526951696e615ad4</url>
    <id>68d76aa504a629e112caef13526951696e615ad4</id>
    <committed-date>2008-11-07T05:15:28-08:00</committed-date>
    <authored-date>2008-11-04T03:35:09-08:00</authored-date>
    <message>fix root path detection under thin/passenger

Fixed how the Sinatra application's path is set. Previously it
was derived exclusively from $0, but this was causing problems
when running Sinatra under Rack because $0 is the web server
(e.g., thin, passenger, etc) and thus Sinatra would incorrectly
set things like the default views path. This fix adds a new
locate_app_file method that uses a number of techniques to guess the
Sinatra application's path.</message>
    <tree>756005949c3b3757070a5774780aa50005379906</tree>
    <committer>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>d389d27e1f5be58abfb4b0daa7c25920113e1b68</id>
      </parent>
    </parents>
    <author>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </author>
    <url>http://github.com/bmizerany/sinatra/commit/b03d7171d9103974904d85424351883fb2357614</url>
    <id>b03d7171d9103974904d85424351883fb2357614</id>
    <committed-date>2008-11-07T04:40:15-08:00</committed-date>
    <authored-date>2008-11-07T04:27:09-08:00</authored-date>
    <message>fix in file templates w/ CR+LF line ends (#45)</message>
    <tree>69e089d360f4db572a563425ee2eec1ec06df3c6</tree>
    <committer>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>8c8a93db60491ae28c57a0a00d58fb8059a7777b</id>
      </parent>
    </parents>
    <author>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </author>
    <url>http://github.com/bmizerany/sinatra/commit/a7c1cdc64ae81bcd3c5aeb1af833bad777173ab2</url>
    <id>a7c1cdc64ae81bcd3c5aeb1af833bad777173ab2</id>
    <committed-date>2008-11-02T05:04:53-08:00</committed-date>
    <authored-date>2008-11-02T01:55:46-07:00</authored-date>
    <message>0.3.2 release</message>
    <tree>3d49371387a8ae2a1157a8d8fa8bd3ac03381766</tree>
    <committer>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>b6d05bc6cd382c2a9e0daa495b7374af6f62395c</id>
      </parent>
    </parents>
    <author>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </author>
    <url>http://github.com/bmizerany/sinatra/commit/7c77c2291bb7b7a69eefdf67e77f783c67848946</url>
    <id>7c77c2291bb7b7a69eefdf67e77f783c67848946</id>
    <committed-date>2008-11-02T01:06:10-07:00</committed-date>
    <authored-date>2008-11-02T00:53:03-07:00</authored-date>
    <message>simplify Static implementation; use 8K chunks instead of 4K

The Static event handler is now instantiated with a reference
back to the Sinatra app instead of using the global singleton.
While here, bump streaming buffer size from 4K to 8K -- word
around the campfire is that reading in 8K chunks results in a bit
less IO on most modern systems.</message>
    <tree>d52cb7c36fb02ec3755bd08b16bd754e88332b9d</tree>
    <committer>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>1ce747bdec9eef1f02f8a554e7cfcc40c959796d</id>
      </parent>
    </parents>
    <author>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </author>
    <url>http://github.com/bmizerany/sinatra/commit/b6d05bc6cd382c2a9e0daa495b7374af6f62395c</url>
    <id>b6d05bc6cd382c2a9e0daa495b7374af6f62395c</id>
    <committed-date>2008-11-02T01:06:10-07:00</committed-date>
    <authored-date>2008-11-02T00:23:04-07:00</authored-date>
    <message>remove custom rack mongrel handler

This is the same (byte-for-byte) handler that's included with Rack
0.4 which we've required since 0.3.</message>
    <tree>696165a131cd46d60295248220dc5a0082de172c</tree>
    <committer>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>10c90d5f8759c4a10bf33b47d405ae38910baeef</id>
      </parent>
    </parents>
    <author>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </author>
    <url>http://github.com/bmizerany/sinatra/commit/1ce747bdec9eef1f02f8a554e7cfcc40c959796d</url>
    <id>1ce747bdec9eef1f02f8a554e7cfcc40c959796d</id>
    <committed-date>2008-11-02T01:02:50-07:00</committed-date>
    <authored-date>2008-11-02T00:20:46-07:00</authored-date>
    <message>fix send_file reading entire file by default

The default :stream option value was not being picked up properly
leading all calls to send_file (including those served with Static)
to read the entire file into a string before sending. Further, the
body was then being returned as a string, which causes Rack to
iterate over the contents line-wise.</message>
    <tree>00fbef7403a06aeff4bd7e79b3c6bea5bd5185ff</tree>
    <committer>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>55221fc8c9737600320928387a995d65ada14710</id>
      </parent>
    </parents>
    <author>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </author>
    <url>http://github.com/bmizerany/sinatra/commit/2f13feabc309587959bb565f4355495a915879af</url>
    <id>2f13feabc309587959bb565f4355495a915879af</id>
    <committed-date>2008-09-08T11:24:35-07:00</committed-date>
    <authored-date>2008-09-08T11:24:35-07:00</authored-date>
    <message>Unbreak optional path parameters</message>
    <tree>c914f8bbdc3583fa50cf21d39eeaa99696d156cf</tree>
    <committer>
      <name>Jeremy Evans</name>
      <email>code@jeremyevans.net</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>ca86f8a5cc2aa34f7f7ad8397746be2f2c174c82</id>
      </parent>
    </parents>
    <author>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </author>
    <url>http://github.com/bmizerany/sinatra/commit/a94f8f7a51d66c093b039d4edcd646ca9adc447c</url>
    <id>a94f8f7a51d66c093b039d4edcd646ca9adc447c</id>
    <committed-date>2008-09-07T21:11:21-07:00</committed-date>
    <authored-date>2008-09-07T21:11:21-07:00</authored-date>
    <message>fix issue with gem install failure with --test arg</message>
    <tree>2c21f82c29b253aede4d15e06b08e852c3daebf5</tree>
    <committer>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>f5d2a3d8b048e56dddf9c901c04e3f97e0522445</id>
      </parent>
    </parents>
    <author>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </author>
    <url>http://github.com/bmizerany/sinatra/commit/ca86f8a5cc2aa34f7f7ad8397746be2f2c174c82</url>
    <id>ca86f8a5cc2aa34f7f7ad8397746be2f2c174c82</id>
    <committed-date>2008-09-07T21:10:41-07:00</committed-date>
    <authored-date>2008-09-07T21:10:41-07:00</authored-date>
    <message>note Sinatra::VERSION in startup message</message>
    <tree>6f3b8103bdf170e57eed03ab552709f9927e6cf2</tree>
    <committer>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>797f2f0fab8ff978084888d034b44ea0d91d7723</id>
      </parent>
    </parents>
    <author>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </author>
    <url>http://github.com/bmizerany/sinatra/commit/6bee4770f03426707d98c2898ac3f4c3efeba664</url>
    <id>6bee4770f03426707d98c2898ac3f4c3efeba664</id>
    <committed-date>2008-09-07T07:53:07-07:00</committed-date>
    <authored-date>2008-09-07T07:53:07-07:00</authored-date>
    <message>workaround for spooky rack action at a distance

Fix based on Collin's work here:

http://sinatra.lighthouseapp.com/projects/9779/tickets/39-file-upload-matching-mp3-causes-silent-failure
http://gist.github.com/3261</message>
    <tree>92a966b1550ce0c48df5be6216e3dc485a234b20</tree>
    <committer>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>9f3dab71a8c38788161f6b6d93c1f203578f1e75</id>
      </parent>
    </parents>
    <author>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </author>
    <url>http://github.com/bmizerany/sinatra/commit/797f2f0fab8ff978084888d034b44ea0d91d7723</url>
    <id>797f2f0fab8ff978084888d034b44ea0d91d7723</id>
    <committed-date>2008-09-07T07:47:22-07:00</committed-date>
    <authored-date>2008-09-07T07:47:22-07:00</authored-date>
    <message>minor cleanup to default error response HTML</message>
    <tree>be67e7572c05aa5643b425f45cb4f78cf2809e27</tree>
    <committer>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>89ce3ff1e9620fe593b7b2103f4594cf8c23ea3e</id>
      </parent>
    </parents>
    <author>
      <name>Simon Rozet</name>
      <email>simon@rozet.name</email>
    </author>
    <url>http://github.com/bmizerany/sinatra/commit/9f3dab71a8c38788161f6b6d93c1f203578f1e75</url>
    <id>9f3dab71a8c38788161f6b6d93c1f203578f1e75</id>
    <committed-date>2008-09-07T07:44:41-07:00</committed-date>
    <authored-date>2008-07-08T11:34:42-07:00</authored-date>
    <message>close opened pre tag in sinatra's html code</message>
    <tree>39f19ce50b27072905e3e0968697825b2e1335da</tree>
    <committer>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>8d10d94a9ab415c55549c5e7f005c18a864d7d82</id>
      </parent>
    </parents>
    <author>
      <name>Simon Rozet</name>
      <email>simon@rozet.name</email>
    </author>
    <url>http://github.com/bmizerany/sinatra/commit/89ce3ff1e9620fe593b7b2103f4594cf8c23ea3e</url>
    <id>89ce3ff1e9620fe593b7b2103f4594cf8c23ea3e</id>
    <committed-date>2008-09-07T07:43:44-07:00</committed-date>
    <authored-date>2008-07-08T11:32:02-07:00</authored-date>
    <message>set correct content-type for sinatra's custom images</message>
    <tree>9eac5e528f2cb229b4782cd2188193b2546f759f</tree>
    <committer>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>171143da72d533a12f599a338c56de512cbb8886</id>
      </parent>
    </parents>
    <author>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </author>
    <url>http://github.com/bmizerany/sinatra/commit/0fff0d8d02db42f7be4c3bc7dfb58b242dfed2dd</url>
    <id>0fff0d8d02db42f7be4c3bc7dfb58b242dfed2dd</id>
    <committed-date>2008-09-07T06:50:35-07:00</committed-date>
    <authored-date>2008-09-07T06:50:35-07:00</authored-date>
    <message>remove core extensions used for url escaping

The following methods were removed. All code that used them
now uses Rack::Utils's escape methods directly:

  * Hash#from_params
  * Hash#to_params
  * Hash#symbolize_keys (not used)
  * Hash#pass (not used)</message>
    <tree>ec6545d7021c1df93f9b1e08f07d0c02d2ecfe11</tree>
    <committer>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>9f572fc6ac0a1f69134735447034f66835a2ec29</id>
      </parent>
    </parents>
    <author>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </author>
    <url>http://github.com/bmizerany/sinatra/commit/171143da72d533a12f599a338c56de512cbb8886</url>
    <id>171143da72d533a12f599a338c56de512cbb8886</id>
    <committed-date>2008-09-07T06:41:31-07:00</committed-date>
    <authored-date>2008-09-07T06:41:31-07:00</authored-date>
    <message>remove String#to_param and String#from_param

Use Rack::Util's unescape instead.</message>
    <tree>f299b34f2434187a2f8264e9d6d6b86185269db7</tree>
    <committer>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>eef025c7f515f777fc780dec526f379dd7048648</id>
      </parent>
    </parents>
    <author>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </author>
    <url>http://github.com/bmizerany/sinatra/commit/9f572fc6ac0a1f69134735447034f66835a2ec29</url>
    <id>9f572fc6ac0a1f69134735447034f66835a2ec29</id>
    <committed-date>2008-09-07T06:40:20-07:00</committed-date>
    <authored-date>2008-09-07T06:40:20-07:00</authored-date>
    <message>be smarter about forwarding methods to response

Only forward if the response object responds to the given
message. This makes exceptions a bit easier to track down.</message>
    <tree>4a9d5dd929affa7cc021c5e94cbbef692d450753</tree>
    <committer>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>3105f21132f7e2061a52bc6170bfba7a3bee19ce</id>
      </parent>
    </parents>
    <author>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </author>
    <url>http://github.com/bmizerany/sinatra/commit/491023a17b0d64261d113831ca11e2fe147ffcbe</url>
    <id>491023a17b0d64261d113831ca11e2fe147ffcbe</id>
    <committed-date>2008-09-07T05:02:10-07:00</committed-date>
    <authored-date>2008-09-07T05:02:10-07:00</authored-date>
    <message>before filters can modify request routing variables

Execute the before filters before looking up the
event. Makes it possible for filters to rewrite request
variables such as PATH_INFO and REQUEST_METHOD and have
it effect which route is chosen.</message>
    <tree>fa14c82cbc1097cd6ea09bc0a06f85d078cd360d</tree>
    <committer>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>26facecebf53ba23dcf1c0392838a691fb4118d3</id>
      </parent>
    </parents>
    <author>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </author>
    <url>http://github.com/bmizerany/sinatra/commit/3105f21132f7e2061a52bc6170bfba7a3bee19ce</url>
    <id>3105f21132f7e2061a52bc6170bfba7a3bee19ce</id>
    <committed-date>2008-09-07T04:16:25-07:00</committed-date>
    <authored-date>2008-09-07T04:07:45-07:00</authored-date>
    <message>make raise_errors option more reliable

The raise_errors option was implemented as part of
the default error handler making it worthless in development
mode or with a custom error handler. This moves the
implementation to the core dispatch method.

While here, clean up the Error class a bit, making it
use the options provided and pass the correct HTTP status
code.</message>
    <tree>7529edf33fa64e32621c326d97df61300f18754e</tree>
    <committer>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </committer>
  </commit>
  <commit>
    <parents type="array">
      <parent>
        <id>f1b730ccb23e8465c1956e563b3247602fd2c169</id>
      </parent>
    </parents>
    <author>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </author>
    <url>http://github.com/bmizerany/sinatra/commit/26facecebf53ba23dcf1c0392838a691fb4118d3</url>
    <id>26facecebf53ba23dcf1c0392838a691fb4118d3</id>
    <committed-date>2008-09-07T03:34:35-07:00</committed-date>
    <authored-date>2008-09-07T03:34:35-07:00</authored-date>
    <message>register development error handlers during reload

Fixes case where development error handlers show up in
non-development environments when the env option is set
in code instead of on the command line.

For example, the following app shows the development 404
page:

    require 'sinatra'
    set :env, :production</message>
    <tree>f2bff8a238bab81198a9f6231e830b43aa9f4d0d</tree>
    <committer>
      <name>Ryan Tomayko</name>
      <email>rtomayko@gmail.com</email>
    </committer>
  </commit>
</commits>
