# Why can't I alias\_method :remove\_method?

**URL:** <https://www.ruby-forum.com/t/why-cant-i-alias-method-remove-method/64641>\
**Category:** Ruby\
**Created:** [August 15, 2006, 2:12pm UTC](https://www.ruby-forum.com/t/why-cant-i-alias-method-remove-method/64641 "2006-08-15T14:12:08Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![pergesu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/22d042/32.png) [@pergesu](https://www.ruby-forum.com/u/pergesu)\
**Post date:** [August 15, 2006, 2:12pm UTC](https://www.ruby-forum.com/t/why-cant-i-alias-method-remove-method/64641/1 "2006-08-15T14:12:08Z")

</div>

irb(main):001:0\> class Foo  
irb(main):002:1\> alias\_method :old\_remove\_method, :remove\_method  
irb(main):003:1\> end  
NameError: undefined method `remove_method' for class`Foo’  
from (irb):2:in `alias\_method’  
from (irb):2

But you can call remove\_method from within the class, so why can’t you  
alias it? What other methods can’t you alias? Or rather, what are the  
restrictions/conditions under which you must use alias\_method?

---

<div class="post-metadata">

**Author:** ![pergesu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/22d042/32.png) [@pergesu](https://www.ruby-forum.com/u/pergesu)\
**Post date:** [August 15, 2006, 2:12pm UTC](https://www.ruby-forum.com/t/why-cant-i-alias-method-remove-method/64641/2 "2006-08-15T14:12:16Z")

</div>

Hi,

At Thu, 10 Aug 2006 15:46:40 +0900,  
Pat M. wrote in [ruby-talk:207490]:

> irb(main):001:0\> class Foo  
> irb(main):002:1\> alias\_method :old\_remove\_method, :remove\_method  
> irb(main):003:1\> end  
> NameError: undefined method `remove_method' for class`Foo’  
> from (irb):2:in `alias\_method’  
> from (irb):2
> 
> But you can call remove\_method from within the class, so why can’t you  
> alias it? What other methods can’t you alias? Or rather, what are the  
> restrictions/conditions under which you must use alias\_method?

You can call a singleton method named remove\_method which is  
inherited from the super class, Module, but you didn’t define  
an instance method named remove\_method.

You can:

class Foo  
class \<\< self  
alias\_method :old\_remove\_method, :remove\_method  
end  
end
