method_missing

S

Simon Corcoran

[Note: parts of this message were removed to make it a legal post.]

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
 
J

Jesús Gabriel y Galán

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

Are you talking about Ruby/DBI?

http://ruby-dbi.rubyforge.org/git?p...40396ee59c6cf36ab9fec937f38f012570e4d;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.
 
S

Simon Corcoran

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

Simon Corcoran

Thanks Jes=FAs, 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 =3D by_field(name)
end
end


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

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,968
Messages
2,570,154
Members
46,702
Latest member
LukasConde

Latest Threads

Top