# Proper way to include module methods with dynamic code?

**URL:** <https://www.ruby-forum.com/t/proper-way-to-include-module-methods-with-dynamic-code/162194>\
**Category:** Ruby\
**Created:** [March 6, 2009, 4:27pm UTC](https://www.ruby-forum.com/t/proper-way-to-include-module-methods-with-dynamic-code/162194 "2009-03-06T16:27:16Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![jdw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/dbc845/32.png) [@jdw](https://www.ruby-forum.com/u/jdw)\
**Post date:** [March 6, 2009, 4:27pm UTC](https://www.ruby-forum.com/t/proper-way-to-include-module-methods-with-dynamic-code/162194/1 "2009-03-06T16:27:16Z")

</div>

Hi,

(This is in a Rails context, but I believe is much more of a Ruby  
question so is posted here.)

I’ve got an index method with some dynamic bits I’d like to place into a  
module and include in several controllers:

module MyApp::ListsControllerIndex  
def index  
self.instance\_variable\_set( “@#{@models\_str}”, @klass.find(:all) )

```
respond_to do |format|
  format.html do
    render 'shared/lists_index'
  end
end

```

end # End index  
end # End module

(The instance variables @models\_str and @klass are set by a  
before\_filter in the controller.)

When I try to include this module into controllers via any combination  
of include or extend, I either get:

1. a nil.find error as Ruby seems to try and execute/resolve @klass in  
@klass.find when included rather than after the filters have run (seen  
with include)
2. the included method is not found (seen with extend)

What I’d like is the method to be added to my controller class and be  
sitting ready and waiting to evaluate the dynamic bits when called. (Or  
said another way, for the included method to work successfully the same  
way it does when it’s defined directly in the controller or a superclass  
of the controller.)

I’ve read through include/extend docs but clearly need some additional  
help. Any is much appreciated and thanks for your time!

Cheers.

---

<div class="post-metadata">

**Author:** ![jdw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/dbc845/32.png) [@jdw](https://www.ruby-forum.com/u/jdw)\
**Post date:** [March 6, 2009, 4:57pm UTC](https://www.ruby-forum.com/t/proper-way-to-include-module-methods-with-dynamic-code/162194/2 "2009-03-06T16:57:14Z")

</div>

Methods in module will become the instance methods of the class which  
includes this module.  
make sure your before\_filter is running properly, and @klass is  
defined.

---

<div class="post-metadata">

**Author:** ![jdw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/dbc845/32.png) [@jdw](https://www.ruby-forum.com/u/jdw)\
**Post date:** [March 6, 2009, 7:39pm UTC](https://www.ruby-forum.com/t/proper-way-to-include-module-methods-with-dynamic-code/162194/3 "2009-03-06T19:39:55Z")

</div>

Hi Nanfang,

Thanks for your response… you were indeed correct sir, it was my  
oversight re: the before filter.

All best!
