[rails] undefined method `handling_predicate!'

I’m trying to use authlogic and factory_girl with rspec and I am
getting an error I don’t understand. Basically I have this failing
spec:

it “should succeed in creating a user from a factory” do
testuser = Factory.create(:user)
debugger
testuser.should be_valid
end

When I stop in the debugger I see this:

(rdb:1) testuser.valid?
true
(rdb:1) testuser.should be_valid
NoMethodError Exception: undefined method `handling_predicate!’ for
#<Spec::Matchers::Be:0x25a9cac @args=[:be_valid]>

My (limited) understanding of rSpec is that if the “testuser.valid?”
works then “testuser.should be_valid” should work as well. I’m
confused because its not working.

Can someone help me understand what is going on here?

I am using the following gem versions:
rspec (1.3.0)
rspec-rails (1.3.2)
authlogic (2.1.3)
factory_girl (1.2.3)
rails (2.3.5)

I have uninstalled/ reinstalled rspec, rspec-rails and rerun
script/generate rspec letting it overwrite everything.

Gist with full terminal output from running the spec and files:

spec/models/user_spec.rb
spec/spec_helper.rb
spec/factories/users.rb

thanks
Dan S.

On Wed, Jan 20, 2010 at 12:00 PM, Dan S. [email protected]
wrote:

When I stop in the debugger I see this:

script/generate rspec letting it overwrite everything.

Gist with full terminal output from running the spec and files:
users.rb · GitHub
spec/models/user_spec.rb
spec/spec_helper.rb
spec/factories/users.rb

thanks
Dan S.

Hey Dan,

If you’re seeing that error it means you have an older version of
rspec-rails than 1.3.2 that is being loaded. Try running the spec with
–backtrace so you can see a full backtrace. Do you see any other
versions being loaded? Maybe from vendor/plugins?

On Jan 20, 7:07 pm, David C. [email protected] wrote:

confused because its not working.
I have uninstalled/ reinstalled rspec, rspec-rails and rerun

Hey Dan,

If you’re seeing that error it means you have an older version of
rspec-rails than 1.3.2 that is being loaded. Try running the spec with
–backtrace so you can see a full backtrace. Do you see any other
versions being loaded? Maybe from vendor/plugins?


rspec-users mailing list
[email protected]://rubyforge.org/mailman/listinfo/rspec-users

David,

That indeed was the problem. The gist from the original post shows
the test run with --backtrace and it does show rspec-rails in vendor/
plugins (I didn’t see a version number tho). I did the following:
rm -fr vendor/plugin/rspec-rails
rm -fr vendor/plugin/rsecp
sudo gem install rspec rspec-rails

After which the spec no longer produces a NoMethodError and in fact
passes.

Thanks for taking the time to help me understand this, I was really
stuck.

Dan