Muss ich Original-Datei benötigen, wenn die Steuerung von Rails-Engine überschreiben?

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

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

War es hilfreich?

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top