2010-03-24 2 views
1

Я использую Rails 2.2.2. Rails руководство сказал, способ расширить контроллер от плагина является:Рельсы. Как расширить класс контроллера из плагина без каких-либо изменений в файле контроллера?

Плагин:

module Plug 

def self.included(base) 
    base.extend ClassMethods 
    base.send :include, InstanceMethods 
    base.helper JumpLinksHelper 
end 

module InstanceMethods 
    def new_controller_metod 
    ... 
    end 
end 
module ClassMethods 
end 
end 

приложение/контроллер/name_controller.rb

class NameController < ApplicationController 
    include Plug 
    ... 

конец

Вопрос: любой способ расширить контроллер от подключаемого модуля, без каких-либо изменений в контроллере r файл, если известен имя контроллера.

ответ

2

Конечно, если вы знаете имя контроллера, сделать

NameController.send(:include, Plug) 
+0

Rails инициализации плагинов в первом, то контроллер. Поэтому я могу запустить этот код только в конце environment.rb. Но такая же конструкция: class_eval (% {class NameControler \ n включает Plung \ n end;}) в конце environment.rb (неожиданно для меня) не дает результата. – potapuff

+0

@neutrino ваш решает почти идеальный, но я не могу понять? где i shell запускает этот мир кода? если i shell запускает его в environment.rb, он будет использоваться ** только ** для выполнения первого контроллера. – potapuff

+0

не может придумать ничего особенного прямо сейчас. кстати, для производства этого должно быть достаточно. –