Amit
Amit

Reputation: 3990

Plugin to extend actioncontroller for rails

I am writing my first ever plugin for rails. The plugin is supposed to extend the actioncontroller::base

so after going through the tutorials here is what i did...

# Foo
class << ActionController::Base
  def function_name

assuming the plugin is called foo... but when i call function_name from an action, nothing happens... It seems the function_name is not even called. there is no method missing error either so i am sure the plugin has been loaded too...

m stuck real bad!

Upvotes: 2

Views: 749

Answers (2)

Yehuda Katz
Yehuda Katz

Reputation: 28703

You should do this via an on_load hook:

ActiveSupport.on_load(:action_controller) do
  include Foo
end

This will defer including the module until ActionController::Base would be loaded normally. This will avoid AC::Base from being prematurely loaded, which can save some load time in many Rake tasks and when loading the console.

Upvotes: 11

shingara
shingara

Reputation: 46914

You need include a class to ActionController.

module Foo
  def function_name
  end
end

ActionController::Base.send(:include, Foo)

Upvotes: 2

Related Questions