New Rails Projects with Suspenders

Introducing Suspenders, the thoughtbot Rails template.


To create a new project, check out the GitHub repository and run:

./script/create_project projectname

This will create a project in ../projectname. Follow the instructions on GitHub to upload that project there. This script creates an entirely new Git repository, and is not meant to be used against an existing repo.

Changes to the template can be pulled it into your project via:

rake git:pull:suspenders

This is funny, because you're pulling your suspenders.


Suspenders was created for use at thoughtbot as a baseline application setup, with reasonable default plugins that the majority of our applications used, as well as best-practice configuration options.

Thanks to various Boston Ruby Group members for using Suspenders this past weekend and giving it it's first external test runs.

Suspenders currently includes Rails 2.1.1 and:

├── action_mailer_configs.rb
├── hoptoad.rb
├── requires.rb
├── time_formats.rb
├── RedCloth
├── factory_girl
├── mocha
├── quietbacktrace
├── thoughtbot-shoulda
├── will_paginate
├── helper_test
├── hoptoad_notifier
├── limerick_rake
├── mile_marker
├── squirrel


The basic test setup uses Test::Unit, Shoulda, factory_girl, and mocha, and includes some standard shoulda macros that we've used on various projects.

Factory Girl is a fixture replacement library, following the factory pattern. Place your factories in test/factories.rb. The fixture directory has been removed, as fixtures are not used.

Shoulda is a pragmatic testing framework for Test-Driven Development built on top of Test::Unit. A number of additional testing macros are provided in test/shoulda_macros.


Deployment is done using Capistrano and deploys to a Mongrel cluster running under Apache.

Rake tasks are provided for managing Git branches which the different environments pull from for deploy.

To push the Git master to Git staging branch run:

rake git:push:staging

To push the Git staging branch to production branch run:

rake git:push:production

Setup your deployment environment by running:

cap ENVIRONMENT deploy:setup

You'll be prompted for the environment's database password.

Deploy to the desired environment by running:

cap ENVIRONMENT deploy

The default environment for deploy is staging. To deploy to staging, run:

cap deploy


The official Suspenders mascot is Suspenders Boy.

suspenders boy