# How to exec a module method when "include Module" from a Class?

**URL:** <https://www.ruby-forum.com/t/how-to-exec-a-module-method-when-include-module-from-a-class/136427>\
**Category:** Ruby\
**Created:** [May 1, 2008, 11:48pm UTC](https://www.ruby-forum.com/t/how-to-exec-a-module-method-when-include-module-from-a-class/136427 "2008-05-01T23:48:56Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![ISSSSaki\_Baz\_C](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/51bf81/32.png) [@ISSSSaki\_Baz\_C](https://www.ruby-forum.com/u/ISSSSaki_Baz_C)\
**Post date:** [May 1, 2008, 11:48pm UTC](https://www.ruby-forum.com/t/how-to-exec-a-module-method-when-include-module-from-a-class/136427/1 "2008-05-01T23:48:56Z")

</div>

Hi, I have a class C that includes a module M.  
I need that when a C object is created a module M method is runned  
automatically (without call it from “initialize” method) to fill an  
object  
attribute. Something as:

* * *

module M  
def module\_method  
@words \<\< “module\_word”  
end  
end

class C  
include C

attr\_reader :words

## def initialize @words = [] @words \<\< “class\_word” end end

irb\> c=C.new  
irb\> c.words  
[“class\_word”, “module\_word”]

Is it possible without adding “module\_method()” in class C initialize  
method?

Thanks a lot.

---

<div class="post-metadata">

**Author:** ![ISSSSaki\_Baz\_C](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/51bf81/32.png) [@ISSSSaki\_Baz\_C](https://www.ruby-forum.com/u/ISSSSaki_Baz_C)\
**Post date:** [May 2, 2008, 9:32am UTC](https://www.ruby-forum.com/t/how-to-exec-a-module-method-when-include-module-from-a-class/136427/2 "2008-05-02T09:32:56Z")

</div>

2008/5/1, IÃ±aki Baz C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> irb\> c=C.new  
> irb\> c.words  
> [“class\_word”, “module\_word”]
> 
> Is it possible without adding “module\_method()” in class C initialize method?

Of course I could use inheritance and super method in “initialize()”  
but in fact I need to include more than a module so inheritance  
(single using “class \< class”) is not valid for me.

---

<div class="post-metadata">

**Author:** ![ISSSSaki\_Baz\_C](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/51bf81/32.png) [@ISSSSaki\_Baz\_C](https://www.ruby-forum.com/u/ISSSSaki_Baz_C)\
**Post date:** [May 2, 2008, 10:06am UTC](https://www.ruby-forum.com/t/how-to-exec-a-module-method-when-include-module-from-a-class/136427/3 "2008-05-02T10:06:21Z")

</div>

You can try overwrite initialize method from the module

module M

```
   def self.included(classname)
   classname.class_eval <<-EOS
   alias_method :old_initialize, :initialize
     def initialize
       old_initialize
       module_method
     end
   EOS
   end

   def module_method
           @words << "module_word"
   end

```

end

class C

```
   attr_reader :words

   def initialize
           @words = []
           @words << "class_word"
   end

   include M

```

end

Sandro  
[www.railsonwave.com](http://www.railsonwave.com)

---

<div class="post-metadata">

**Author:** ![ISSSSaki\_Baz\_C](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/51bf81/32.png) [@ISSSSaki\_Baz\_C](https://www.ruby-forum.com/u/ISSSSaki_Baz_C)\
**Post date:** [May 2, 2008, 11:37am UTC](https://www.ruby-forum.com/t/how-to-exec-a-module-method-when-include-module-from-a-class/136427/4 "2008-05-02T11:37:55Z")

</div>

2008/5/2, Sandro P. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> ```
> end
> 
> ```
> 
> class C  
> include M  
> end

Great !!!  
I didn’t know the meaning of “included” class method of Module. Very  
useful in conjunction with “class\_eval”  
🙂

Thanks a lot.
