# Strange behavior of alias\_method\_chains

**URL:** <https://www.ruby-forum.com/t/strange-behavior-of-alias-method-chains/153953>\
**Category:** Rails\
**Created:** [November 23, 2008, 7:52pm UTC](https://www.ruby-forum.com/t/strange-behavior-of-alias-method-chains/153953 "2008-11-23T19:52:52Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![asoto](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/58956e/32.png) [@asoto](https://www.ruby-forum.com/u/asoto)\
**Post date:** [November 23, 2008, 7:52pm UTC](https://www.ruby-forum.com/t/strange-behavior-of-alias-method-chains/153953/1 "2008-11-23T19:52:52Z")

</div>

Greetings.

I’ve got very strange behavior of alias\_method\_chains, and I hope  
someone will advise me.

I have a rails 2.2.2 app created with  
#rails aliasApp

, a class XYZ residing in app/helpers/xyz.rb:

`
class XYZ
attr_accessor :name
attr_accessor :value
def initialize (a, b)
puts “in XYZ constructor”
self.name = a
self.value = b
end
def a
puts self.name
end
def b
puts self.value
end
end
`

, and an extended class XYZ in app/views/xyz\_ext.rb

`
class XYZ
   def initialize_with_extension a,b
      puts "before chain"
      initialize_without_extension a,b
      puts "after chain"
   end
   alias_method_chain :initialize, :extension
end
`

So basically what I expect to have three lines in the console when  
creating XYZ:

1. before chain
2. in Alias constructor
3. after chain

BUT I get something really different!

silencio:alias u2$ script/console  
Loading development environment (Rails 2.2.2)

> > require ‘app/views/xyz\_ext.rb’  
> > =\> [“XYZ”]
> 
> > XYZ.new 1,3  
> > before chain  
> > ArgumentError: wrong number of arguments (2 for 0)  
> > from ./app/views/xyz\_ext.rb:4:in `initialize_without_extension' from ./app/views/xyz_ext.rb:4:in`initialize’  
> > from (irb):3:in `new’  
> > from (irb):3
> 
> >

Any ideas on this error would be very appreciated!  
Alex

---

<div class="post-metadata">

**Author:** ![asoto](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/58956e/32.png) [@asoto](https://www.ruby-forum.com/u/asoto)\
**Post date:** [November 23, 2008, 9:04pm UTC](https://www.ruby-forum.com/t/strange-behavior-of-alias-method-chains/153953/2 "2008-11-23T21:04:54Z")

</div>

The problem here is that the “normal” XYZ in xyz.rb is never loaded so  
you’re trying to call Object’s initialize, which does not take 2  
arguments

Fred

Sent from my iPhone

On 23 Nov 2008, at 18:52, Alex Sonar \<rails-mailing-list@andreas-

---

<div class="post-metadata">

**Author:** ![asoto](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/58956e/32.png) [@asoto](https://www.ruby-forum.com/u/asoto)\
**Post date:** [November 23, 2008, 9:31pm UTC](https://www.ruby-forum.com/t/strange-behavior-of-alias-method-chains/153953/3 "2008-11-23T21:31:55Z")

</div>

Fred,

I really appreciate your help. The following works like a charm.

silencio:alias u2$ script/console  
Loading development environment (Rails 2.2.2)

> > require ‘app/helpers/alias.rb’  
> > =\> [“XYZ”]
> 
> > require ‘app/views/alias\_ext.rb’  
> > =\> []
> 
> > XYZ.new 1,2  
> > before chain  
> > in Alias constructor  
> > after chain  
> > =\> #\<XYZ:0x259c73c @value=2, @name=1\>

But having this in mind, how do I ensure that my ‘app/helpers/alias.rb’  
is loaded BEFORE any extended classes? Sorry if this a really newbie  
question…

Alex

Frederick C. wrote:

> The problem here is that the “normal” XYZ in xyz.rb is never loaded so  
> you’re trying to call Object’s initialize, which does not take 2  
> arguments
> 
> Fred
> 
> Sent from my iPhone
> 
> On 23 Nov 2008, at 18:52, Alex Sonar \<rails-mailing-list@andreas-

---

<div class="post-metadata">

**Author:** ![asoto](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/58956e/32.png) [@asoto](https://www.ruby-forum.com/u/asoto)\
**Post date:** [November 23, 2008, 11:48pm UTC](https://www.ruby-forum.com/t/strange-behavior-of-alias-method-chains/153953/4 "2008-11-23T23:48:34Z")

</div>

Thanks again!

Frederick C. wrote:

> Require it explicitly from the extension file ?
> 
> Sent from my iPhone
> 
> On 23 Nov 2008, at 20:31, Alex Sonar \<rails-mailing-list@andreas-

---

<div class="post-metadata">

**Author:** ![asoto](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/58956e/32.png) [@asoto](https://www.ruby-forum.com/u/asoto)\
**Post date:** [November 23, 2008, 10:07pm UTC](https://www.ruby-forum.com/t/strange-behavior-of-alias-method-chains/153953/5 "2008-11-23T22:07:05Z")

</div>

Require it explicitly from the extension file ?

Sent from my iPhone

On 23 Nov 2008, at 20:31, Alex Sonar \<rails-mailing-list@andreas-
