Dois-je avoir besoin du fichier d'origine pour remplacer le contrôleur de Rails Engine?
-
22-07-2019 - |
Question
J'essaie de remplacer une action dans un contrôleur défini par un moteur Rails.
Il semble que j'ai besoin d'exiger le fichier d'origine avant de rouvrir la classe, comme suit:
require File.join(RAILS_ROOT, 'vendor/plugins/myplugin/app/controllers/some_controller')
class SomeController
def index
render :text => 'this is my index'
end
end
Cela a du sens, mais cette exigence est très laide. Existe-t-il une sorte de magie Rails qui me permettrait d’éviter l’exigence initiale?
La solution
C’est une supposition complète ...
Cela ressemble davantage à un problème de synchronisation de charge. Au fur et à mesure, votre fichier est chargé avant le plug-in. Où se situe votre action? config / initialisateurs? lib?
Je ne sais pas quand Rails Engines sera chargé alors jouez avec l'emplacement (cela devrait fonctionner en le mettant dans lib).
Ou, mieux encore, créez votre propre plug-in avec les modifications et assurez-vous qu'il se charge après l'original.
Et vous voulez probablement quelque chose de plus semblable à:
SomeController.class_eval do
def index
...
end
end