Several months ago I’ve started using the spectator gem. I’m using the Rspec testing framework with the spectator event watcher as the test runner. Spring allows us to watch the test run almost immediately after hitting save of a file in the editor.
In my experience spectator is easy to to use, you don’t need to configure anything, it just works out of the box. Tools like guard on the other hand have long list of options to run with.
Using spectator is pretty simple, just install the spectator gem
gem install spectator and then run
spectator in your root project. Now every time you modify a file in your project, spectator searches and launches the associated spec.
Our goal is to integrate spring in test environment in order to improve startup performance and thus speed up the entire process.
My current gemfile setup icludes:
# Gemfile group :development, :test do gem 'rspec-rails', '~> 3.0' gem 'spring' end group :development gem 'spring-commands-rspec' gem 'spectator' end
spring-commands-rspec implements the rspec command for Spring. As you can see in spring-commands-rspec readme, this gem generates a
bin/rspec file like this:
# bin/rspec #!/usr/bin/env ruby begin load File.expand_path("../spring", __FILE__) rescue LoadError end require 'bundler/setup' load Gem.bin_path('rspec-core', 'rspec')
To verify that the installation of spring-commands-rspec is successful you can run
./bin/rspec and then verify that spring is running with
The first startup will take a moment. Now that spring has started the app server for you, subsequent runs will use a forked process from this server instead and return faster.
To integrate faster
./bin/rspec command in spectator just create a
.spectator.rb file in your root project as above:
# .spectator.rb ENV['RSPEC_COMMAND'] = './bin/rspec'
Have a nice and fast TDD!