[rspec-users] When is spec_helper.rb actually executed?

Wes Gamble weyus at att.net
Wed Oct 8 18:49:45 EDT 2008

Scott Taylor wrote:
> On Oct 8, 2008, at 6:26 PM, Wes Gamble wrote:
>> I'm trying to debug what I suspect is a case where spec_helper.rb is not
>> being executed.
>> I put a puts statement inside the Spec::Runner.configure do |config|
>> block, and I can't ever see the printout.
>> When does spec_helper.rb get run during rspec operation?
> What does your spec_helper.rb contain?
> AFAIK, it gets executed before anything else - usually it contains 
> Spec::Runner.configure { .. }
It is the standard default spec_helper.rb (see below).  I could find no 
reference to it in the rake "spec" task.  I added this:

require '../../spec/spec_helper'

to the "spec" task and now it gets all of the config from spec_helper 
(including RAILS_ENV which was not being set before).


It contains:

# This file is copied to ~/spec when you run 'ruby script/generate rspec'
# from the project root directory.
ENV["RAILS_ENV"] = "test"
require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
require 'spec'
require 'spec/rails'

Spec::Runner.configure do |config|
  puts "In config block of Spec::Runner"
  # If you're not using ActiveRecord you should remove these
  # lines, delete config/database.yml and disable :active_record
  # in your config/boot.rb
  config.use_transactional_fixtures = true
  config.use_instantiated_fixtures  = false
  config.fixture_path = RAILS_ROOT + '/spec/fixtures/'

  # == Fixtures
  # You can declare fixtures for each example_group like this:
  #   describe "...." do
  #     fixtures :table_a, :table_b
  # Alternatively, if you prefer to declare them only once, you can
  # do so right here. Just uncomment the next line and replace the fixture
  # names with your fixtures.
  # config.global_fixtures = :table_a, :table_b
  # If you declare global fixtures, be aware that they will be declared
  # for all of your examples, even those that don't use them.
  # == Mock Framework
  # RSpec uses it's own mocking framework by default. If you prefer to
  # use mocha, flexmock or RR, uncomment the appropriate line:
  # config.mock_with :mocha
  # config.mock_with :flexmock
  # config.mock_with :rr

More information about the rspec-users mailing list