Upgrade shoulda-matchers to 1.5.4 and change the gem group to development and test
There was a regression in the 1.5.X to 1.5.4. I was having the same issue.
Question
After I upgraded my shoulda gem to 3.4.0, my tests would no longer run.
Context:
When I set up my Gemfile and run bundle exec rspec spec
I get the following errors:
#Gemfile #1
group :test do
gem 'rspec-rails', '2.13.0'
gem 'shoulda', '3.4.0'
end
Error: gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `require': cannot load such file -- rspec (LoadError)
#Gemfile #2
group :test do
gem 'factory_girl_rails', '4.2.1'
gem 'rspec-rails', '2.13.0'
gem 'shoulda-matchers', '1.5.0'
end
Error: gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `require': cannot load such file -- rspec (LoadError)
#Gemfile #3
group :test do
gem 'factory_girl_rails', '4.2.1'
gem 'rspec', '2.13.0'
gem 'shoulda', '3.4.0'
end
Error: /gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `require': cannot load such file -- rspec/rails (LoadError)
These are the only Gemfile versions that work, but they don't seem to be the correct setup:
#Gemfile #4
group :test do
gem 'factory_girl_rails', '4.2.1'
gem 'rspec', '2.13.0'
gem 'rspec-rails', '2.13.0'
gem 'shoulda-matchers', '1.5.0'
end
#Gemfile #5
group :test do
gem 'factory_girl_rails', '4.2.1'
gem 'rspec', '2.13.0'
gem 'rspec-rails', '2.13.0'
gem 'shoulda', '3.4.0'
end
Example of full error trace (typical):
/Users/wrburgess/.rvm/gems/ruby-1.9.3-p392@league/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `require': cannot load such file -- rspec (LoadError)
from /Users/wrburgess/.rvm/gems/ruby-1.9.3-p392@league/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `block in require'
from /Users/wrburgess/.rvm/gems/ruby-1.9.3-p392@league/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:236:in `load_dependency'
from /Users/wrburgess/.rvm/gems/ruby-1.9.3-p392@league/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `require'
from /Users/wrburgess/.rvm/gems/ruby-1.9.3-p392@league/gems/shoulda-matchers-1.5.0/lib/shoulda/matchers/integrations/rspec.rb:2:in `<top (required)>'
from /Users/wrburgess/.rvm/gems/ruby-1.9.3-p392@league/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `require'
from /Users/wrburgess/.rvm/gems/ruby-1.9.3-p392@league/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `block in require'
from /Users/wrburgess/.rvm/gems/ruby-1.9.3-p392@league/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:236:in `load_dependency'
from /Users/wrburgess/.rvm/gems/ruby-1.9.3-p392@league/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `require'
from /Users/wrburgess/.rvm/gems/ruby-1.9.3-p392@league/gems/shoulda-matchers-1.5.0/lib/shoulda/matchers.rb:5:in `<top (required)>'
from /Users/wrburgess/.rvm/gems/ruby-1.9.3-p392@league/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `require'
from /Users/wrburgess/.rvm/gems/ruby-1.9.3-p392@league/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `block in require'
from /Users/wrburgess/.rvm/gems/ruby-1.9.3-p392@league/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:236:in `load_dependency'
from /Users/wrburgess/.rvm/gems/ruby-1.9.3-p392@league/gems/activesupport-3.2.13/lib/active_support/dependencies.rb:251:in `require'
from /Users/wrburgess/.rvm/gems/ruby-1.9.3-p392@league/gems/shoulda-matchers-1.5.0/lib/shoulda-matchers.rb:1:in `<top (required)>'
from /Users/wrburgess/.rvm/gems/ruby-1.9.3-p392@league/gems/bundler-1.3.4/lib/bundler/runtime.rb:72:in `require'
from /Users/wrburgess/.rvm/gems/ruby-1.9.3-p392@league/gems/bundler-1.3.4/lib/bundler/runtime.rb:72:in `block (2 levels) in require'
from /Users/wrburgess/.rvm/gems/ruby-1.9.3-p392@league/gems/bundler-1.3.4/lib/bundler/runtime.rb:70:in `each'
from /Users/wrburgess/.rvm/gems/ruby-1.9.3-p392@league/gems/bundler-1.3.4/lib/bundler/runtime.rb:70:in `block in require'
from /Users/wrburgess/.rvm/gems/ruby-1.9.3-p392@league/gems/bundler-1.3.4/lib/bundler/runtime.rb:59:in `each'
from /Users/wrburgess/.rvm/gems/ruby-1.9.3-p392@league/gems/bundler-1.3.4/lib/bundler/runtime.rb:59:in `require'
from /Users/wrburgess/.rvm/gems/ruby-1.9.3-p392@league/gems/bundler-1.3.4/lib/bundler.rb:132:in `require'
from /Users/wrburgess/dev/jbrb/league-server/config/application.rb:8:in `<top (required)>'
from /Users/wrburgess/dev/jbrb/league-server/config/environment.rb:2:in `require'
from /Users/wrburgess/dev/jbrb/league-server/config/environment.rb:2:in `<top (required)>'
from /Users/wrburgess/dev/jbrb/league-server/spec/spec_helper.rb:3:in `require'
from /Users/wrburgess/dev/jbrb/league-server/spec/spec_helper.rb:3:in `<top (required)>'
from /Users/wrburgess/dev/jbrb/league-server/spec/config/initializers/app_settings_spec.rb:1:in `require_relative'
from /Users/wrburgess/dev/jbrb/league-server/spec/config/initializers/app_settings_spec.rb:1:in `<top (required)>'
from /Users/wrburgess/.rvm/gems/ruby-1.9.3-p392@league/gems/rspec-core-2.13.1/lib/rspec/core/configuration.rb:819:in `load'
from /Users/wrburgess/.rvm/gems/ruby-1.9.3-p392@league/gems/rspec-core-2.13.1/lib/rspec/core/configuration.rb:819:in `block in load_spec_files'
from /Users/wrburgess/.rvm/gems/ruby-1.9.3-p392@league/gems/rspec-core-2.13.1/lib/rspec/core/configuration.rb:819:in `each'
from /Users/wrburgess/.rvm/gems/ruby-1.9.3-p392@league/gems/rspec-core-2.13.1/lib/rspec/core/configuration.rb:819:in `load_spec_files'
from /Users/wrburgess/.rvm/gems/ruby-1.9.3-p392@league/gems/rspec-core-2.13.1/lib/rspec/core/command_line.rb:22:in `run'
from /Users/wrburgess/.rvm/gems/ruby-1.9.3-p392@league/gems/rspec-core-2.13.1/lib/rspec/core/runner.rb:80:in `run'
from /Users/wrburgess/.rvm/gems/ruby-1.9.3-p392@league/gems/rspec-core-2.13.1/lib/rspec/core/runner.rb:17:in `block in autorun'
Solution
Upgrade shoulda-matchers to 1.5.4 and change the gem group to development and test
There was a regression in the 1.5.X to 1.5.4. I was having the same issue.