Testing my Ruby gem: undefined `configure 'method for Musta :: Matchers: Module (NoMethodError)

I am working on my first Ruby gem and have cucumber, rspec and matches for testing. When I run rspec, I get the following error:

/app/my_gem/spec/spec_helper.rb:6:in `<top (required)>': undefined method `configure' for Shoulda::Matchers:Module (NoMethodError) 

Here is my gemspec:

 # my_gem.gemspec ... Gem::Specification.new do |spec| ... ... spec.add_development_dependency "activemodel" spec.add_development_dependency "bundler", "~> 1.8" spec.add_development_dependency "cucumber" spec.add_development_dependency "rake", "~> 10.0" spec.add_development_dependency "rspec" spec.add_development_dependency "shoulda-matchers" end 

My spec_helper.rb :

 require 'my_gem' require 'pry' require 'shoulda/matchers' Shoulda::Matchers.configure do |config| config.integrate do |with| with.test_framework :rspec # with.library :active_record with.library :active_model # with.library :action_controller # Or, choose all of the above: # with.library :rails end end 

For some reason, a search for the Shoulda :: Matchers method, but not the .configure method. I demand that shoulda wrong somehow? Not sure if this is related, but rspec also gives me this warning:

 WARN: Unresolved specs during Gem::Specification.reset: json (>= 1.7.7, ~> 1.7) minitest (~> 5.1) WARN: Clearing out unresolved specs. Please report a bug if this causes problems. 

Thanks for any pointers!

+5
source share
3 answers

It looks like you are trying to use documentation for version 3.0a.alpha sockets, which supports 3.0.0.alpha , but uses an older version. Either look at the correct documentation for the version you are using (I assume 2.8.x ) or update your Gemfile to use 3.0.0.alpha :

 gem 'shoulda-matchers', github: 'thoughtbot/shoulda-matchers' 

Then run bundle install and Shoulda::Matchers.configure should start working.

+10
source

The solution provided by @infused is correct.

The documentation and configuration provided on GitHub is for version 3.x, not 2.x.

To make it work, change the must-matchers version to '~> 3.0.0.alpha' and then run the 'bundle update should-matchers'

0
source

Git depreciates the protocol, now use:

  gem 'shoulda-matchers', git: 'https://github.com/thoughtbot/shoulda-matchers.git' 

(for https://github.com/thoughtbot/shoulda-matchers/issues/719#issuecomment-103556439 )

-1
source

All Articles