Preciso exigem arquivo original ao substituir controlador de Rails Engine?
-
22-07-2019 - |
Pergunta
Eu estou tentando substituir uma ação em um controlador definido por um Rails Engine.
Parece que eu preciso para exigir que o arquivo original antes de reabrir a classe, assim:
require File.join(RAILS_ROOT, 'vendor/plugins/myplugin/app/controllers/some_controller')
class SomeController
def index
render :text => 'this is my index'
end
end
Isso faz sentido, mas que necessita é muito feio. Existe algum tipo de Rails mágica que me permitiria evitar exigir a inicial?
Solução
Esta é uma suposição completa ...
Parece mais um problema de carga timing. Como em seu arquivo está sendo carregado antes do plug-in. Onde está sua ação localizada? config / initializers? lib?
Eu não tenho a certeza de quando Rails Engines é carregado de modo brincar com a localização (deve funcionar, colocando-o em lib).
Ou, ainda melhor, criar seu próprio plug-in com as mudanças e garantir que ele carrega após o original.
E você provavelmente vai querer algo mais parecido com:
SomeController.class_eval do
def index
...
end
end