Dois-je avoir besoin du fichier d'origine pour remplacer le contrôleur de Rails Engine?

StackOverflow https://stackoverflow.com/questions/1823361

  •  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?

Était-ce utile?

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top