alias vs alias_method
It comes up very often. Should I use
alias_method . Lets take a look at them in a bit detail.
Usage of alias
Usage of alias_method
First difference you will notice is that in case of
alias_method we need to use a comma between the “new method name” and “old method name”.
alias_method takes both symbols and strings as input. Following code would also work.
That was easy. Now lets take a look at how scoping impacts usage of
Scoping with alias
In the above case method “name” picks the method “full_name” defined in “Developer” class. Now lets try with
With the usage of
alias the method “name” is not able to pick the method “full_name” defined in
This is because
alias is a keyword and it is lexically scoped. It means it treats
self as the value of
self at the time the source code was read . In contrast
self as the value determined at the run time.
Overall my recommendation would be to use
alias_method is a method defined in class
Module it can be overridden later and it offers more flexibility.