# Call overwritten method of included module?

**URL:** <https://www.ruby-forum.com/t/call-overwritten-method-of-included-module/121034>\
**Category:** Ruby\
**Created:** [November 23, 2007, 12:21am UTC](https://www.ruby-forum.com/t/call-overwritten-method-of-included-module/121034 "2007-11-23T00:21:48Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![josh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/45deac/32.png) [@josh](https://www.ruby-forum.com/u/josh)\
**Post date:** [November 23, 2007, 12:21am UTC](https://www.ruby-forum.com/t/call-overwritten-method-of-included-module/121034/1 "2007-11-23T00:21:48Z")

</div>

Hi all

module MyModule  
def my\_method  
return “my module rocks!”  
end  
end

class MyClass  
include(MyModule)

def my\_method  
return “my class rocks!”  
end  
end

Is there a way to call MyModule::my\_method from within MyClass? “super”  
sadly doesn’t work…

Thanks a lot  
Josh

---

<div class="post-metadata">

**Author:** ![josh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/45deac/32.png) [@josh](https://www.ruby-forum.com/u/josh)\
**Post date:** [November 23, 2007, 2:33am UTC](https://www.ruby-forum.com/t/call-overwritten-method-of-included-module/121034/2 "2007-11-23T02:33:43Z")

</div>

On Nov 22, 2007, at 6:21 PM, Joshua M. wrote:

> def my\_method  
> return “my class rocks!”  
> end  
> end
> 
> Is there a way to call MyModule::my\_method from within MyClass?  
> “super”  
> sadly doesn’t work…

Perhaps this will do:

`
module MyModule
    def my_method
       "my module rocks!"
    end
end
class MyClass
include MyModule
alias module_method my_method
def my_method
“#{module_method}\nmy class rocks!”
end
end
puts MyClass.new.my_method
` my module rocks! my class rocks!

Regards, Morton

---

<div class="post-metadata">

**Author:** ![josh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/45deac/32.png) [@josh](https://www.ruby-forum.com/u/josh)\
**Post date:** [November 23, 2007, 3:30am UTC](https://www.ruby-forum.com/t/call-overwritten-method-of-included-module/121034/3 "2007-11-23T03:30:59Z")

</div>

> ```
> return "my class rocks!"
> 
> ```
> 
> end  
> end
> 
> Is there a way to call MyModule::my\_method from within  
> MyClass? “super”  
> sadly doesn’t work…

You’d need to alias the old method:

class MyClass  
include(MyModule)  
alias :old\_my\_method :my\_method  
def my\_method  
old\_my\_method  
end  
end

(If you’re using rails/activesupport, you’d probably use  
alias\_method\_chain to simplify things)

Dan.

---

<div class="post-metadata">

**Author:** ![josh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/45deac/32.png) [@josh](https://www.ruby-forum.com/u/josh)\
**Post date:** [November 23, 2007, 1:22pm UTC](https://www.ruby-forum.com/t/call-overwritten-method-of-included-module/121034/4 "2007-11-23T13:22:53Z")

</div>

> (If you’re using rails/activesupport, you’d probably use  
> alias\_method\_chain to simplify things)
> 
> Dan.

Thanks! Especially for the alias\_method\_chain hint! 🙂

---

<div class="post-metadata">

**Author:** ![josh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/45deac/32.png) [@josh](https://www.ruby-forum.com/u/josh)\
**Post date:** [November 23, 2007, 1:31pm UTC](https://www.ruby-forum.com/t/call-overwritten-method-of-included-module/121034/5 "2007-11-23T13:31:54Z")

</div>

On Nov 23, 2007 12:21 AM, Joshua M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> def my\_method  
> return “my class rocks!”  
> end  
> end
> 
> Is there a way to call MyModule::my\_method from within MyClass? “super”  
> sadly doesn’t work…  
> super shall work and indeed does  
> module MyModule  
> def my\_method  
> return “my module rocks!”  
> end  
> end

class MyClass  
include(MyModule)

def my\_method

```
 return [super, "my class rocks!"].join("\n")

```

end  
end

puts MyClass.new.my\_method

HTH  
Robert
