(While this post is out of date in regards to recent versions of OSX which includes Notification Center some people on older versions of OSX or those requiring Growl may find the information useful. If you are coming to Growl with a clean slate and have OSX 10.8 Mountain Lion or later have a look at terminal-notifier-guard first. Please note: unless building your own binary from source Growl 2.x is now a paid application.)

Guard is like autotest (part of ZenTest) except its a bit more of a multipurpose tool. You can use it to fire off CSS creation for Sass/Scss, compile .coffee files into .js, and of course watch for changes to *_spec.rb and their associated files among other things. Growl is a visual notification tool popular on OS X. When you combine these two you will receive visual notifications that popup as your specs fail or pass without having to switch to the command line - and yes it only runs those that have changed. (You can configure where and how Growl displays its notifications in the Growl system prefs pane located under the "Other" category.)

In order to see the Growl notifications you have to do several things. Installing Growl is one of them, but you will also need a couple more gems in your Gemfile (rb-fsevent for performance friendly polling of file system updates and growl which is the gem that interfaces with the CLI growlnotify). You'll need to download and install the appropriate growlnotify CLI app for your version of Growl from the Growl downloads page - scroll down, its on there. You can verify the installation by running growlnotify from Terminal, entering a message when prompted, then hitting Ctrl+D to post the message to Growl, and verifying that you see the message display on screen.

My Gemfile ended up looking like this:

# Gemfile  
⋮
group :development do  
  ⋮
  gem 'guard' 
  gem 'guard-rspec'
  gem 'guard-bundler'

  if RUBY_PLATFORM.downcase.include?("darwin")
    gem 'rb-fsevent'
    gem 'growl' # also install growlnotify
  end
end  
⋮

Since Growl is Mac OS X the if test only installs those gems for the development profile on OS X. (There are Windows and Linux equivalents that I obviously have not had to install.)

After you have ran bundle install you can then run:

#console  
$ guard init rspec

...which will generate a sample RSpec-themed Guardfile in the current directory. This Guardfile has some examples that may work for you out of the box - here's mine with some modification and support for the other guarded files:

# Guardfile

guard 'bundler' do  
    watch('Gemfile')
end

guard 'rspec', :version => 2, :cli => '--color --format doc' do  
  watch(%r{^spec/.+_spec\.rb})
  watch(%r{^lib/(.+)\.rb}) { |m| "spec/lib/#{m[1]}_spec.rb" }
  watch('spec/spec_helper.rb') { "spec" }

  # rails
  watch (%r{^spec/models/.+_spec\.rb}) { "spec/models" }
  watch('spec/spec_helper.rb') { "spec" }
  watch('config/routes.rb') { "spec/routing" }
  watch(%r{^app/controllers/.+_controller\.rb}) { "spec/controllers" }
  watch(%r{^spec/.+_spec\.rb})
  watch(%r{^app/(.+)\.rb}) { |m| "spec/#{m[1]}_spec.rb" }
  watch(%r{^lib/(.+)\.rb}) { |m| "spec/lib/#{m[1]}_spec.rb" }
  #watch(%r{^app/controllers/(.+)_(controller)\.rb}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
end

The 'bundler' block does what you might guess - if your Gemfile is saved (yes touch is enough, a file CRC change is not required) bundle install is executed.

In order to start Guard, simply execute guard in the directory with your Guardfile. All path patterns in the Guardfile are relative to the file itself. You should see immediate output as Guard attempts to get a clean run of your specs.

If you see nothing - I had this problem - run rspec spec/controllers through each folder under spec and see where your problem lies. In my case it was because one of the controller specs generated before I switched to factory_girl had fixtures :all in it; removing that line seemed to fix the problem.

As files or their associated specs are changed your specs will execute and you will receive Growl notifications. Failure messages should include a red "X" icon so you can easily tell red from green.