Project

General

Profile

Bug #14583

#method() is reporting the wrong self in exception

Added by krainboltgreene (Kurtis Rainbolt-Greene) about 1 month ago. Updated about 1 month ago.

Status:
Feedback
Priority:
Normal
Assignee:
-
Target version:
-
ruby -v:
ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-darwin16]
[ruby-core:85982]

Description

This is hard to explain but I'll do my best:

When running an rspec test I get this exception:

  Failure/Error: resource_class.write_attributes_via_call(model, attributes.select(&resource.method(:valid_attribute?)))

     NameError:
       undefined method `valid_attribute?' for class `PhotoRealizer'
       Did you mean?  alias_attribute

This is unequivocally wrong, so I go to prove it:

    13: def call
    14:   resource.model.tap do |model|
    15:     resource_class.write_attributes_via_call(model, {id: id}) if id
 => 16:     binding.pry
    17:     resource_class.write_attributes_via_call(model, attributes.select(&resource.method(:valid_attribute?)))
    18:     resource_class.write_attributes_via_call(model, relationships.select(&resource.method(:valid_relationship?)).transform_values(&resource.method(:as_relationship)))
    19:     resource_class.save_via_call(model)
    20:   end
    21: end

[1] pry(#<JSONAPI::Realizer::Action::Create>)> resource
=> #<PhotoRealizer:0x00007fa16d608c98 @model=#<Photo:0x00007fa16d608d38 @id="550e8400-e29b-41d4-a716-446655440000">>
[2] pry(#<JSONAPI::Realizer::Action::Create>)> resource.class
=> PhotoRealizer
[3] pry(#<JSONAPI::Realizer::Action::Create>)> resource.class.valid_attribute?
ArgumentError: wrong number of arguments (given 0, expected 2)

Turns out however, that I'm being silly and calling method() on an instance, so I exit out of my pry:

 Failure/Error: resource_class.write_attributes_via_call(model, attributes.select(&resource.method(:valid_attribute?)))

     NameError:
       undefined method `valid_attribute?' for class `#<Class:#<PhotoRealizer:0x00007fa16d608c98>>'
       Did you mean?  alias_attribute

Wait, what? How could this be? A different error now that I've observed?

History

#1 Updated by krainboltgreene (Kurtis Rainbolt-Greene) about 1 month ago

  • Subject changed from #method() is reporting the wrong self in lookup to #method() is reporting the wrong self in exception

#2 [ruby-core:85984] Updated by marcandre (Marc-Andre Lafortune) about 1 month ago

  • Status changed from Open to Feedback

Oops, misread your report, sorry. Previous answer removed.

Now I'd say that it's a third party issue (pry), unless you can reproduce it in pure ruby...

Also available in: Atom PDF