# \[Plugin dev.\] Hook into ActionController::Base properly

**URL:** <https://www.ruby-forum.com/t/plugin-dev-hook-into-actioncontroller-base-properly/170670>\
**Category:** Rails\
**Created:** [June 20, 2009, 9:41pm UTC](https://www.ruby-forum.com/t/plugin-dev-hook-into-actioncontroller-base-properly/170670 "2009-06-20T21:41:40Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![metafoo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/f05b48/32.png) [@metafoo](https://www.ruby-forum.com/u/metafoo)\
**Post date:** [June 20, 2009, 9:41pm UTC](https://www.ruby-forum.com/t/plugin-dev-hook-into-actioncontroller-base-properly/170670/1 "2009-06-20T21:41:40Z")

</div>

Hi all,

currently I’m developing a plugin wich shoud hook into ActionController.  
To do that, I’m using ActionController::Base.send(:include, …) but  
when I want to call the according methods from within a controller, I  
get an MethodNotError.

The following code shows what I’m currently trying. Mixing the  
ViewHelpers into ActionView::Base work’s fine. The same I want to do  
with ActionController:Base, but that does’n work:

```auto
#require 'widget_pool/loader'
require 'widget_pool/view_helpers'
require 'widget_pool/base'

module WidgetPool

  module Loader
    def load_widget name
      puts 'loading widget: ' + name.to_s
    end
  end

  class << self
    def enable
      puts 'starting widget_pool...'

      ActionView::Base.send :include, ViewHelpers
      ActionController::Base.send :include, Loader
    end
  end
end

WidgetPool.enable
```

Does anybody know, what is missing to make it work?

Thanks & Greetings

---

<div class="post-metadata">

**Author:** ![metafoo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/f05b48/32.png) [@metafoo](https://www.ruby-forum.com/u/metafoo)\
**Post date:** [June 20, 2009, 10:29pm UTC](https://www.ruby-forum.com/t/plugin-dev-hook-into-actioncontroller-base-properly/170670/2 "2009-06-20T22:29:43Z")

</div>

I just startet my RailsApp in a console:

ActionController::Base.instance\_methods.include? ‘load\_widget’

# results to true

class Test \< ActionController::Base  
end

Test.methods.include? ‘load\_widget’

# results to false

How this can be?

---

<div class="post-metadata">

**Author:** ![metafoo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/f05b48/32.png) [@metafoo](https://www.ruby-forum.com/u/metafoo)\
**Post date:** [June 20, 2009, 11:35pm UTC](https://www.ruby-forum.com/t/plugin-dev-hook-into-actioncontroller-base-properly/170670/3 "2009-06-20T23:35:41Z")

</div>

Ok, in my example I just forgot to instantiate Test 😉

t = Test.new  
t.methods.include? ‘load\_widget’

# also results to true

But why I cannot call the method from withing the controller? :-/

---

<div class="post-metadata">

**Author:** ![metafoo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/f05b48/32.png) [@metafoo](https://www.ruby-forum.com/u/metafoo)\
**Post date:** [June 21, 2009, 1:05am UTC](https://www.ruby-forum.com/t/plugin-dev-hook-into-actioncontroller-base-properly/170670/4 "2009-06-21T01:05:30Z")

</div>

On Jun 20, 10:35 pm, Wer S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Ok, in my example I just forgot to instantiate Test 😉
> 
> t = Test.new  
> t.methods.include? ‘load\_widget’
> 
> # also results to true
> 
> But why I cannot call the method from withing the controller? :-/

How are you calling things ? My guess is you’re trying

class Test\< ActionController::Base  
some\_method\_from\_your\_plugin  
end

For this to work some\_method\_from\_your\_plugin needs to be a class  
method (since you are calling it on Test itself, not an instance of  
it) but it looks like you’re only adding instance methods.

Fred

---

<div class="post-metadata">

**Author:** ![metafoo](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/f05b48/32.png) [@metafoo](https://www.ruby-forum.com/u/metafoo)\
**Post date:** [June 22, 2009, 11:26am UTC](https://www.ruby-forum.com/t/plugin-dev-hook-into-actioncontroller-base-properly/170670/5 "2009-06-22T11:26:44Z")

</div>

You’re right with your guess! 😉 Thanks!
