用于扩展actioncontroller for rails的插件

Ami*_*mit 2 plugins ruby-on-rails ruby-on-rails-plugins ruby-on-rails-3

我正在写第一个rails的插件.该插件应该扩展actioncontroller :: base

所以在完成这里的教程后,我做了...

# Foo
class << ActionController::Base
  def function_name
Run Code Online (Sandbox Code Playgroud)

假设插件被称为foo ...但是当我从一个动作调用function_name时,没有任何反应......似乎甚至没有调用function_name.没有方法丢失错误,所以我确定插件已经加载...

我真的很难受!

Yeh*_*atz 11

你应该通过on_load钩子来做到这一点:

ActiveSupport.on_load(:action_controller) do
  include Foo
end
Run Code Online (Sandbox Code Playgroud)

这将推迟包括模块,直到ActionController :: Base正常加载.这样可以避免AC::Base过早加载,这可以节省许多Rake任务和加载控制台时的一些加载时间.