Плагин для расширения actioncontroller для рельсов - PullRequest
2 голосов
/ 06 октября 2010

Я пишу свой первый плагин для рельсов. Плагин должен расширять actioncontroller :: base

так что после прохождения уроков вот что я сделал ...

# Foo
class << ActionController::Base
  def function_name

при условии, что плагин называется foo ... но когда я вызываю имя_функции из действия, ничего не происходит ... Кажется, имя_функции даже не вызывается. нет ошибки пропускаемого метода, так что я уверен, что плагин тоже был загружен ...

Я застрял очень плохо!

Ответы [ 2 ]

11 голосов
/ 10 декабря 2011

Вы должны сделать это через ловушку on_load:

ActiveSupport.on_load(:action_controller) do
  include Foo
end

Это будет откладывать включение модуля до тех пор, пока ActionController :: Base не будет загружен нормально.Это позволит избежать преждевременной загрузки AC::Base, что может сэкономить некоторое время загрузки во многих задачах Rake и при загрузке консоли.

2 голосов
/ 06 октября 2010

Вам необходимо включить класс в ActionController.

module Foo
  def function_name
  end
end

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