method_missing

D

Diego Viola

Hello,

This is my first email that I send to this ML, so hi everyone :)

I've been using Ruby for 2 years or more now, and I am still learning
this awesome language. But I can't grasp my head about method_missing
and how it works, can someone please help me understand about how
method_missing works?

Thanks,

Diego
 
B

botp

this awesome language. But I can't grasp my head about method_missing
and how it works, can someone please help me understand about how
method_missing works?

what is in the docs that you do not understand?

best regards -botp
 
B

Brian Candler

Diego said:
I've been using Ruby for 2 years or more now, and I am still learning
this awesome language. But I can't grasp my head about method_missing
and how it works, can someone please help me understand about how
method_missing works?

class Foo
def bar(*args)
puts "You called bar with #{args.inspect}"
end
def method_missing(*args)
puts "method_missing with #{args.inspect}"
end
end

f = Foo.new
f.bar(1,2,3)
f.wibble(4,5,6)
 
D

Diego Viola

Nice, so method_missing is called when I call a method that I didn't
defined myself?

Thanks,

Diego
 
R

Rick DeNatale

A

Alex Stahl

method_missing is a great tool for dynamically adding/handling methods
which aren't currently part of the object.

I was just reading up on this in the free Ruby Best Practices book
(check out ch. 3): http://rubybestpractices.com
 
D

Diego Viola

I tried this code:

http://gist.github.com/585143

but why do i get a: asd.rb:6:in `method_missing': wrong number of
arguments (1 for 0) (ArgumentError) -- when i try to call
method_missing like that?

if i use method_missing(*args) it works, does method_missing requires
that i use an argument?

Thanks

method_missing is a great tool for dynamically adding/handling methods
which aren't currently part of the object.

I was just reading up on this in the free Ruby Best Practices book
(check out ch. 3): =A0http://rubybestpractices.com



 
B

Brian Candler

Diego said:
I tried this code:

http://gist.github.com/585143

but why do i get a: asd.rb:6:in `method_missing': wrong number of
arguments (1 for 0) (ArgumentError) -- when i try to call
method_missing like that?

if i use method_missing(*args) it works, does method_missing requires
that i use an argument?

Run the code I first posted again, and look at the output carefully.

method_missing is passed the name of the method which didn't exist as
the first argument, followed by 0 or more values which were the
arguments to the original call. So you must define it to receive at
least one argument.

A good template to use:

def method_missing(method_name, *args, &block)
...
end
 

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

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top