Rick DeNatale
2008-Jun-12 21:25 UTC
[rspec-users] Mysterious interaction between RSpec 1.1.4 and has_finder/named_scope
I just opened a Rails ticket on a problem with named_scope in Rails 2.1, and cross-posted a message here which I send to rails-core. I''m still a bit mystified, because I''m having a problem caused by this on RSpec 1.1.4, but not on 1.1.3, and I don''t see a difference in code which would explain it. The basic problem, which I encountered upgrading our rails app to RSpec 1.1.4 was a case like this: class SpaceFile < ActiveRecord::Base named_scope :public ... end In a spec I have code like this: ... 11: model = Model.new 12: model.stub!(:path).and_return("x/y") NoMethodError in ''SpaceFile be readable'' You have a nil object when you didn''t expect it! The error occurred while evaluating nil.call /Users/rick/near-time/near-time.net-exp-migrate-to-rspec-1-1-4-6750/spec/models/space_file_spec.rb:12: What''s happening is when Spec::Mocks::Proxy.define_expected_method uses class_eval to define the stub method, Ruby is calling public under the covers but instead of getting the standard method which makes the method public, it ends up calling the method generated by the named_scope method which tries to get a proc from an empty hash, and ends up trying to send call to nil. What I can''t figure out is why this is failing under RSpec 1.1.4, but it doesn''t fail under 1.1.3, the code I''ve looked at doesn''t seem to have changed. Any ideas? -- Rick DeNatale My blog on Ruby http://talklikeaduck.denhaven2.com/ -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20080612/75c49295/attachment-0001.html>