Skip to content
Watches specs for a Rails (2 or 3) project
Latest commit 19d6fc0 @elia Update gemspec info
Failed to load latest commit information.
bin load config also from ~/.spectator.rb
lib version bump
spec Add some specs for the specs matcher
.gitignore Released!
.rspec The BIG rewrite /1
CHANGELOG add changelog file
Gemfile The BIG rewrite /2
MIT-LICENSE Released! update readme
Rakefile Released!
spectator.gemspec Update gemspec info


Code Climate

Test driven development red-green cycle for simple people!

The gist

Spectator is a simple watcher for your specs:

  • it will execute a spec each time a file (spec or implementation) is modified or created (really catches new files!)
  • it does not starts your whole suite at start, nor when a spec passes or fails (as autospec tends to do)
  • if you ask it runs the whole spec suite

Started as a custom Watchr script Spectator has grown up to a tiny gem!


Works with RSpec-1 and RSpec-2 (looks for a .rspec file in the project root).


Launch spectator in a terminal and go back to code!

The normal behavior is similar to autotest --fast-start --no-full-after-failed but gives the user a bit more control over execution. By hitting CTRL+C (or CMD+. on OSX) you get the following prompt:

^C (Interrupted with CTRL+C)
--- What to do now? (q=quit, a=all-specs):

Type q and ENTER (or CTRL+C again) to quit.

Type a and ENTER (or CTRL+C again) to execute the whole suite of specs.

Advanced Configuration

If you want to override some path matching:


The glob that expanded will list the directories that contains the code. Default:


The glob that expanded will list the directories that contains the specs. Default:


The full command that will run your specs. Default: bundle exec rspec (or bundle exec spec for RSpec 1.x)


Inline ENV variables

# this will match lib/opal/parser.rb to spec/cli/parser.rb
BASE_DIR_REGEXP='lib/opal' SPEC_DIR_REGEXP='spec/cli' spectator

Exported ENV variables

BASE_DIR_REGEXP: '(?:opal/corelib|stdlib|spec)'
SPEC_DIR_REGEXP: '(?:spec/corelib/core|spec/stdlib/\w+/spec)'
RSPEC_COMMAND: 'bundle exec ./bin/opal-mspec'

With a .spectator.rb script file

This file can be present in each project folder or in your home directory if you want to share general settings. When files are present in both folders the one in the home directory will be loaded first.

# contents of ".spectator.rb" file

ENV['BASE_DIR_REGEXP']  = '(?:opal/corelib|stdlib|spec)'
ENV['SPEC_DIR_REGEXP:'] = '(?:spec/corelib/core|spec/stdlib/\w+/spec)'
ENV['RSPEC_COMMAND']    = 'bundle exec ./bin/opal-mspec'

require 'spectator/success_notifier'

module Spectator
  class SuccessNotifier
    def notify(success)
      fork { exec "say #{say_message(success)}" }

    def say_message(success)
      success ? 'All right' : 'Ouch'


Copyright © 2011-2014 Elia Schito, released under the MIT license

Something went wrong with that request. Please try again.