alias_method code snippet doubt.

G

Googy

module Mod
alias_method :eek:rig_exit, :exit
def exit(code=0)
puts "Exiting with code #{code}"
orig_exit(code)
end
end
include Mod
exit(99)



Above snippet we are creating new alias (orig_exit) for already
existing method exit. Interesting thing is orig_exit is again called
in exit method, why won't this behavior cause recursive calling of
method it self since orig_exit is simply alias to exit method ?
 
J

Jano Svitok

module Mod
alias_method :eek:rig_exit, :exit
def exit(code=0)
puts "Exiting with code #{code}"
orig_exit(code)
end
end
include Mod
exit(99)



Above snippet we are creating new alias (orig_exit) for already
existing method exit. Interesting thing is orig_exit is again called
in exit method, why won't this behavior cause recursive calling of
method it self since orig_exit is simply alias to exit method ?

This is a pattern how to preserve original method that you want to override.
Alias stores the method as it was when alias was called. When you
override the method, the alias stil points to the old version --
that's the point of this construct.

J.
 
G

Googy

This is a pattern how to preserve original method that you want to override.
Alias stores the method as it was when alias was called. When you
override the method, the alias stil points to the old version --
that's the point of this construct.

J.

Thanks I am now able to understand whats going on, Until now I used to
assume like alias'ed method and original method point to single
version of method.

Thanks for clarifying.
 

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,777
Messages
2,569,604
Members
45,220
Latest member
MathewSant

Latest Threads

Top