2

J'écris mon tout premier plugin pour rails. Le plugin est censé étendre la base de ActionController ::Plugin pour étendre le contrôleur d'action pour rails

donc après avoir traversé les tutoriels ici est ce que je l'ai fait ...

# Foo 
class << ActionController::Base 
    def function_name 

en supposant que le plug-in est appelé foo ... mais quand je l'appelle nom_fonction à partir d'une action, rien ne se passe ... Il semble que le nom de fonction ne soit même pas appelé. il n'y a pas de méthode manquant erreur donc je suis sûr que le plugin a été chargé aussi ...

m bloqué vraiment mauvais!

Répondre

2

Vous devez inclure une classe à ActionController.

module Foo 
    def function_name 
    end 
end 

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

Vous devriez le faire via un crochet on_load:

ActiveSupport.on_load(:action_controller) do 
    include Foo 
end 

Ce différera y compris le module jusqu'à ActionController :: Base sera chargée normalement. Cela évitera AC::Base d'être prématurément chargé, ce qui peut économiser du temps de chargement dans de nombreuses tâches Rake et lors du chargement de la console.

Questions connexes