# Scope difference of alias + alias\_method a bug or a feature?

**URL:** <https://www.ruby-forum.com/t/scope-difference-of-alias-alias-method-a-bug-or-a-feature/124584>\
**Category:** Ruby\
**Created:** [December 30, 2007, 4:46pm UTC](https://www.ruby-forum.com/t/scope-difference-of-alias-alias-method-a-bug-or-a-feature/124584 "2007-12-30T16:46:19Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Dirk\_T](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/51bf81/32.png) [@Dirk\_T](https://www.ruby-forum.com/u/Dirk_T)\
**Post date:** [December 30, 2007, 4:46pm UTC](https://www.ruby-forum.com/t/scope-difference-of-alias-alias-method-a-bug-or-a-feature/124584/1 "2007-12-30T16:46:19Z")

</div>

Chan S. in ruby-talk[284135] stumbled over the different scope of  
alias and alias\_method. See his example a little changed:

puts RUBY\_VERSION #=\> 1.8.6  
class T  
def self.redefine  
p self  
alias\_method :bar\_alm, :foo  
alias bar\_a foo  
end  
def foo ; puts “T’s foo” ; end  
end

class S \< T  
def foo ; puts “S’s foo” ; end  
redefine  
end

s = S.new #=\> S  
s.bar\_alm #=\> S’s foo  
s.bar\_a #=\> T’s foo  
p S.instance\_methods.grep(/foo|bar/) #=\> [“foo”, “bar\_a”, “bar\_alm”]  
p T.instance\_methods.grep(/foo|bar/) #=\> [“foo”, “bar\_a”]  
**END**

So:  
alias\_method results in an instance method bar\_alm in S.  
alias results in an instance method bar\_a in T (and so in S).

I would like to repeat his question to straighten it out:  
Is this difference between alias and alias\_method a bug or a feature?

Thanks  
Dirk
