All Versions
Latest Version
Avg Release Cycle
118 days
Latest Release
448 days ago

Changelog History
Page 6

  • v0.9.0 Changes

    January 18, 2009
    • Works with and requires Rack >= 0.9.1

    • Multiple Sinatra applications can now co-exist peacefully within a single process. The new "Sinatra::Base" class can be subclassed to establish a blank-slate Rack application or middleware component. Documentation on using these features is forth-coming; the following provides the basic gist:

    • Parameters with subscripts are now parsed into a nested/recursive Hash structure. e.g., "post[title]=Hello&post[body]=World" yields params: {'post' => {'title' => 'Hello', 'body' => 'World'}}.

    • Regular expressions may now be used in route pattens; captures are available at "params[:captures]".

    • New ":provides" route condition takes an array of mime types and matches only when an Accept request header is present with a corresponding type. [cypher]

    • New request-level "pass" method; immediately exits the current block and passes control to the next matching route.

    • The request-level "body" method now takes a block; evaluation is deferred until an attempt is made to read the body. The block must return a String or Array.

    • New "route conditions" system for attaching rules for when a route matches. The :agent and :host route options now use this system.

    • New "dump_errors" option controls whether the backtrace is dumped to rack.errors when an exception is raised from a route. The option is enabled by default for top-level apps.

    • Better default "app_file", "root", "public", and "views" location detection; changes to "root" and "app_file" automatically cascade to other options that depend on them.

    • Error mappings are now split into two 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)", where "status_code" is an integer, 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)".

    • In-file templates are now automatically imported from the file that requires 'sinatra'. The use_in_file_templates! method is still available for loading templates from other files.

    • Sinatra's testing support is no longer dependent on Test::Unit. Requiring 'sinatra/test' adds the Sinatra::Test module and Sinatra::TestHarness class, which can be used with any test framework. The 'sinatra/test/unit', 'sinatra/test/spec', 'sinatra/test/rspec', or 'sinatra/test/bacon' files can be required to setup a framework-specific testing environment. See the README for more information.

    • Added support for Bacon (test framework). The 'sinatra/test/bacon' file can be required to setup Sinatra test helpers on Bacon::Context.

    • Deprecated "set_option" and "set_options"; use "set" instead.

    • Deprecated the "env" option ("options.env"); use "environment" instead.

    • Deprecated the request level "stop" method; use "halt" instead.

    • Deprecated the request level "entity_tag" method; use "etag" instead. Both "entity_tag" and "etag" were previously supported.

    • Deprecated the request level "headers" method (HTTP response headers); use "response['Header-Name']" instead.

    • Deprecated "Sinatra.application"; use "Sinatra::Application" instead.

    • Deprecated setting Sinatra.application = nil to reset an application. This should no longer be necessary.

    • Deprecated "Sinatra.default_options"; use "Sinatra::Default.set(key, value)" instead.

    • Deprecated the "ServerError" exception. All Exceptions are now treated as internal server errors and result in a 500 response status.

    • Deprecated the "get_it", "post_it", "put_it", "delete_it", and "head_it" test helper methods. Use "get", "post", "put", "delete", and "head", respectively, instead.

    • Removed Event and EventContext classes. Applications are defined in a subclass of Sinatra::Base; each request is processed within an instance.

  • v0.9.0.4 Changes

    January 25, 2009
    • Using halt with more than 1 args causes ArgumentError [#131]
    • using halt in a before filter doesn't modify response [#127]
    • Add deprecated Sinatra::EventContext to unbreak plugins [#130]
    • Give access to GET/POST params in filters [#129]
    • Preserve non-nested params in nested params hash [#117]
    • Fix backtrace dump with Rack::Lint [#116]
  • v0.9.0.3 Changes

    January 21, 2009
    • Fall back on mongrel then webrick when thin not found. [#75]
    • Use :environment instead of :env in test helpers to fix deprecation warnings coming from framework.
    • Make sinatra/test/rspec work again [#113]
    • Fix app_file detection on windows [#118]
    • Fix static files with Rack::Lint in pipeline [#121]
  • v0.9.0.2 Changes

    January 18, 2009
    • Halting a before block should stop processing of routes [#85]
    • Fix redirect/halt in before filters [#85]
  • v0.3.3 Changes

    January 06, 2009
    • Pin to Rack 0.4.0 (this is the last release on Rack 0.4)

    • Log unhandled exception backtraces to rack.errors.

    • Use RACK_ENV environment variable to establish Sinatra environment when given. Thin sets this when started with the -e argument.

    • BUG: raising Sinatra::NotFound resulted in a 500 response code instead of 404.

    • BUG: use_in_file_templates! fails with CR/LF [#45]

    • BUG: Sinatra detects the app file and root path when run under thin/passenger.

  • v0.3.2 Changes

    • BUG: Static and send_file read entire file into String before sending. Updated to stream with 8K chunks instead.

    • Rake tasks and assets for building basic documentation website. See

    • Various minor doc fixes.

  • v0.3.1 Changes

    • Unbreak optional path parameters [jeremyevans]
  • v0.3.0 Changes

    • Add sinatra.gemspec w/ support for github gem builds. Forks can now enable the build gem option in github to get free username-sinatra.gem builds: gem install username-sinatra.gem --source=

    • Require rack-0.4 gem; removes frozen rack dir.

    • Basic RSpec support; require 'sinatra/test/rspec' instead of 'sinatra/test/spec' to use. [avdi]

    • before filters can modify request environment vars used for routing (e.g., PATH_INFO, REQUEST_METHOD, etc.) for URL rewriting type functionality.

    • In-file templates now uses @@ instead of ## as template separator.

    • Top-level environment test predicates: development?, test?, production?

    • Top-level "set", "enable", and "disable" methods for tweaking app options. [rtomayko]

    • Top-level "use" method for building Rack middleware pipelines leading to app. See README for usage. [rtomayko]

    • New "reload" option - set false to disable reloading in development.

    • New "host" option - host/ip to bind to [cschneid]

    • New "app_file" option - override the file to reload in development mode [cschneid]

    • Development error/not_found page cleanup [sr, adamwiggins]

    • Remove a bunch of core extensions (String#to_param, String#from_param, Hash#from_params, Hash#to_params, Hash#symbolize_keys, Hash#pass)

    • Various grammar and formatting fixes to README; additions on community and contributing [cypher]

    • Build RDoc using Hanna template:

    • Specs, documentation and fixes for splat'n routes [vic]

    • Fix whitespace errors across all source files. [rtomayko]

    • Fix streaming issues with Mongrel (body not closed). [bmizerany]

    • Fix various issues with environment not being set properly (configure blocks not running, error pages not registering, etc.) [cypher]

    • Fix to allow locals to be passed to ERB templates [cschneid]

    • Fix locking issues causing random errors during reload in development.

    • Fix for escaped paths not resolving static files [Matthew Walker]

  • v0.2.1 Changes

    • File upload fix and minor tweaks.
  • v0.2.0 Changes

    • Initial gem release of 0.2 codebase.