Here is a side-by-side of Bort and Suspenders.  Both are Rails starter applications.

September 10, 2009

Opinion  Bort  Suspenders­
 pagination  mislav-will_paginate mislav-will_paginate
 non-HTML mark-up
RedCloth 4
 unit test  rspec, rspec_rails  shoulda
 unit test "noise suppression"
 Error notification  exception notifier  hoptoad_notifier
 forms handler Fudge Form  formtastic
 file attachment attachment fu OR Paperclip  paperclip

 deployment  capistrano  ­capistrano
 web server
 mongrel cluster
 time mocking
 login  Restful Authentication (includes OpenID)  Clearance
integration testing

 Browser simulator
 Extra rake tasks bort:install (installs optional add-ons)  Limerick Rake
 Javascript smoosher  asset packager OR bundle fu*
 roles  Role Requirement *

tagging acts_as_taggable_on_steroids *
alternative to RHTML HAML *

Note that in the above table, more opinions is neither good nor bad -- unless they match/don't-match your opinions.

* = optional via "rake bort:install"

For myself, I like the Thoughtbot (Suspenders) stack with the following exceptions:

  • git - I'm using Subversion for other projects.  This is easy enough to address.  After I pull suspenders, I'll just "rm -rf .git".
  • mongrel cluster - I'm not ready to make this commitment at the beginning of the project.  Easy enough to ignore for now, because "script/server" still works.
  • Redcloth - I don't need an alternative mark-up syntax, so I'll have to rm the gem.
  • shoulda - I'm using rspec, so I'll have to rm this gem and install rspec and rspec-rails.

Bundling in Cucumber, Webrat, and Clearance is nice.  They fit well together.

So here’s my current rails project start-up:

  • cd ~/dev
  • git clone git://
  • cd suspenders
  • ./script/create_project projectname
  • At this point, I get an error  "config.gem: Unpacked gem thoughtbot-clearance-0.8.2 in vendor/gems has no specification file. Run 'rake gems:refresh_specs' to fix this."
    • Running refresh_specs all day isn't going to help, because the .gemspec file isn't there on github (with the Clearance that is part of Suspenders -- it IS there on the "real" Clearance).
  • cd ../projectname/vendor/gems
  • rm -rf thoughtbot-clearance-0.8.2
  • git clone git:// thoughtbot-clearance-0.8.2
  • cd ~/dev/projectname
  • rake gems:refresh_specs
  • Comment-out the Redcloth entry in config/environment.rb
  • Comment-out the shoulda entry in config/environments/test.rb
  • Install rspec and rspec-rails:
    • ruby script/plugin install git:// -r 'refs/tags/1.2.7'
    • ruby script/plugin install git:// -r 'refs/tags/'
    • ruby script/generate rspec

So I created the attached shell script to automate this. ­

UPDATE (9/16/2009): I’ve abandoned this approach.  Too often I work from inside a restrictive firewall, and the gyrations necessary to pull-in all of the pieces are simply too idiosyncratic to automate reliably.