Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Sinatra runtime and testing helpers, extensions, and macros used commonly by Thumble Monks

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.



It's my kind of town!
- Sinatra

Yeah, we're real clever. We're also from "The city in mid-west best city in the whole wide wide world" ... which makes us double the clever.

Chicago is a collection of runtime and test extensions and helpers that makes some common tasks a little bit easier.


First, make sure GemCutter is added to your list of sources. If not, install it like so or just follow the instructions for installing the gemcutter gem:

sudo gem sources -a

Then, installing chicago is a quick gem install:

sudo gem install chicago


Sinatra runtime app

In your Sinatra app, do this:

require 'chicago'

And you'll get some helpful Sinatra extensions and helpers.

If you're Sinatra app is considered modular - as in, you are not using the Sinatra::Default app - you will want to add the following in your app:

YourApp < Sinatra::Base
  register Sinatra::Chicago            # for some DSL helpers
  helpers Sinatra::Chicago::Helpers    # for standard helpers
  helpers Sinatra::Chicago::Responders # for JSON assistance

You don't necessarily need all of them. You just need to "include" the statements that mix-in the functionality you want.

Sinatra testing

Assuming you have required 'rack/test', like so:

require 'rack/test'

This is because these macros use last_request defined by the Rack/Test library. If you're using Riot in your tests of your Sinatra app, do this:

require 'chicago/riot'

... and you'll get a bunch of cool Protest macros for testing specific Sinatra stuff.

If you're using Shoulda in your tests of your Sinatra app, do this:

require 'chicago/shoulda'

... and you'll get a bunch of cool Shoulda macros for testing specific Sinatra stuff.

Something went wrong with that request. Please try again.