Reputation: 3990
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
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
Reputation: 46914
You need include a class to ActionController.
module Foo
def function_name
end
end
ActionController::Base.send(:include, Foo)
Upvotes: 2