# Thought I'd share my alias

**URL:** <https://www.ruby-forum.com/t/thought-id-share-my-alias/119781>\
**Category:** Ruby\
**Created:** [November 10, 2007, 12:30pm UTC](https://www.ruby-forum.com/t/thought-id-share-my-alias/119781 "2007-11-10T12:30:57Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Trans](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/dfb087/32.png) [@Trans](https://www.ruby-forum.com/u/Trans)\
**Post date:** [November 10, 2007, 12:30pm UTC](https://www.ruby-forum.com/t/thought-id-share-my-alias/119781/1 "2007-11-10T12:30:57Z")

</div>

class Module

# As with alias\_method, but alias both reader and writer.

# 

# attr\_accessor :x

# self.x = 1

# alias\_accessor :y, :x

# y #=\> 1

# self.y = 2

# x #=\> 2

def alias\_accessor(\*args)  
orig = args.last  
args = args - [orig]  
args.each do |name|  
alias\_method(name, orig)  
alias\_method("#{name}=", “#{orig}=”)  
end  
end

def alias\_reader(\*args)  
orig = args.last  
args = args - [orig]  
args.each do |name|  
alias\_method(name, orig)  
end  
end

def alias\_writer(\*args)  
orig = args.last  
args = args - [orig]  
args.each do |name|  
alias\_method("#{name}=", “#{orig}=”)  
end  
end

end

---

<div class="post-metadata">

**Author:** ![Trans](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/dfb087/32.png) [@Trans](https://www.ruby-forum.com/u/Trans)\
**Post date:** [December 9, 2007, 3:55pm UTC](https://www.ruby-forum.com/t/thought-id-share-my-alias/119781/2 "2007-12-09T15:55:04Z")

</div>

On Nov 10, 6:28 am, Trans [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> ```
> orig = args.last
> alias_method("#{name}=", "#{orig}=")
> end
> 
> ```
> 
> end
> 
> end

Okay. I’d say shorten

> ```
> orig = args.last
> args = args - [orig]
> 
> ```

to ‘orig = args.pop’.

Actually, if I were using this myself I would write

def alias\_accessor(orig, first\_alias, \*aliases)  
aliases.unshift(first\_alias)  
aliases.each …

which is more idiomatic, I think, for variadic methods. I don’t think  
imitation of alias\_method()'s parameter order is worth the decrease in  
elegance.
