Muss ich Original-Datei benötigen, wenn die Steuerung von Rails-Engine überschreiben?
-
22-07-2019 - |
Frage
Ich versuche, eine Aktion in einer Steuerung durch eine Rails-Engine definiert außer Kraft zu setzen.
Es scheint, wie ich die ursprüngliche Datei benötigen muß, bevor die Klasse Wiedereröffnung, etwa so:
require File.join(RAILS_ROOT, 'vendor/plugins/myplugin/app/controllers/some_controller')
class SomeController
def index
render :text => 'this is my index'
end
end
Das ist sinnvoll, aber das erfordert ist ziemlich hässlich. Gibt es irgendeine Art von Rails Magie, die mir die anfänglichen erfordern zu vermeiden erlauben würde?
Lösung
Dies ist eine komplette Vermutung ...
Es scheint eher ein Last Timing-Problem. Wie in wird Ihre Datei vor dem Plug-in geladen zu werden. Wo ist Ihre Aktion liegt config / initializers? lib?
Ich bin nicht sicher, wenn Rails Engines so mit der Position spielen, um geladen werden (funktionieren soll es in lib indem).
Oder, noch besser, erstellen Sie Ihre eigenen Plug-in mit den Änderungen und stellen Sie sicher, dass es nach dem ursprünglichen lädt.
Und Sie wollen wahrscheinlich etwas mehr wie:
SomeController.class_eval do
def index
...
end
end