2010-03-24 7 views
1

Je suis utiliser Rails 2.2.2. Rails ledit manuel, le moyen d'étendre contrôleur de plug-in est la suivante:Rails. Comment étendre la classe de contrôleur du plugin sans aucune modification dans le fichier du contrôleur?

plug-in:

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 

app/contrôleur/name_controller.rb

class NameController < ApplicationController 
    include Plug 
    ... 

extrémité

Question: est un moyen d'étendre le contrôleur à partir du plug-in, sans aucune modification du contrôle r fichier, si nous connaissons le nom du contrôleur.

Répondre

2

Bien sûr, si vous connaissez le nom de votre contrôleur, ne

NameController.send(:include, Plug) 
+0

Rails initialize plug-ins d'abord, puis contrôleur. Je ne peux donc exécuter ce code qu'à la fin de environment.rb. Mais même construction: class_eval (% {class NameControler \ n include Plung \ n end;}) à la fin de environment.rb (de façon inattendue pour moi) ne donne aucun résultat. – potapuff

+0

@neutrino votre solution presque parfaite, mais je ne peux pas comprendre? où je shell exécuter cette paix de code? si je l'exécute dans environment.rb, il sera bien utilisé ** seulement ** pour l'exécution du premier contrôleur. – potapuff

+0

ne peut pas penser à quelque chose de particulier en ce moment. btw, pour la production cela devrait être suffisant. –

Questions connexes