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 |
mocking |
|
mocha |
unit test | rspec, rspec_rails | shoulda |
unit test "noise suppression" |
|
quietbacktrace |
Error notification | exception notifier | hoptoad_notifier |
forms handler | Fudge Form | formtastic |
file attachment | attachment fu OR Paperclip | paperclip |
|
|
helper_test |
fixtures |
|
factory_girl |
deployment | capistrano | capistrano |
web server |
|
mongrel cluster |
VCS |
|
git |
time mocking |
|
Timecop |
login | Restful Authentication (includes OpenID) | Clearance |
integration testing
|
|
Cucumber |
Browser simulator |
|
Webrat |
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://github.com/thoughtbot/suspenders.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://github.com/thoughtbot/clearance.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://github.com/dchelimsky/rspec.git -r 'refs/tags/1.2.7'
- ruby script/plugin install git://github.com/dchelimsky/rspec-rails.git -r 'refs/tags/1.2.7.1'
- 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.