Method_missing

Hi, I have extended BDI::Row as below in order to use dot notation to
retrieve columns values from result rows. It seems however that some
methods
like inspect for example now get caught as missing by this hook and are
not
found and executed as expected. Could anyone shed any light on this
behaviour please?

class DBI::Row
def method_missing(name, *args)
puts “method missing #{name}”
result = by_field(name)
end
end

simon

On Wed, Sep 29, 2010 at 1:22 PM, Simon C. [email protected]
wrote:

end
end

simon

Are you talking about Ruby/DBI?

http://ruby-dbi.rubyforge.org/git?p=ruby-dbi.git;a=blob;f=lib/dbi/row.rb;h=dcf40396ee59c6cf36ab9fec937f38f012570e4d;hb=HEAD

DBI::Row uses DelegateClass to delegate some of the behaviour to an
Array. Right now I’m not really sure how DelegateClass works
underneath, but it seems your overriding of method_missing is messing
with it.

Sorry, I don’t have a solution right now.

Jesus.

ahh interesting - i’ll look into that, thanks - my first attempt
at meta-programming so still a lot to learn

2010/9/29 Jesús Gabriel y Galán [email protected]

Thanks Jesús, the following seems to work

class DBI::Row
def method_missing(name, *args, &block)
return getobj.send(name, *args, &block) if
getobj.respond_to?(name)
result = by_field(name)
end
end

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs