¿Debo solicitar el archivo original al anular el controlador de Rails Engine?
-
22-07-2019 - |
Pregunta
Estoy tratando de anular una acción en un controlador definido por un motor Rails.
Parece que necesito solicitar el archivo original antes de volver a abrir la clase, así:
require File.join(RAILS_ROOT, 'vendor/plugins/myplugin/app/controllers/some_controller')
class SomeController
def index
render :text => 'this is my index'
end
end
Esto tiene sentido, pero ese requerimiento es bastante feo. ¿Hay algún tipo de magia de Rails que me permita evitar el requerimiento inicial?
Solución
Esta es una suposición completa ...
Parece más un problema de tiempo de carga. Como en, su archivo se está cargando antes del complemento. ¿Dónde está ubicada tu acción? config / initializers? lib?
No estoy seguro de cuándo se carga Rails Engines, así que juega con la ubicación (debería funcionar poniéndolo en lib).
O, mejor aún, cree su propio complemento con los cambios y asegúrese de que se cargue después del original.
Y probablemente quieras algo más como:
SomeController.class_eval do
def index
...
end
end