Нужно ли мне запрашивать оригинальный файл при переопределении контроллера из Rails Engine?
-
22-07-2019 - |
Вопрос
Я пытаюсь переопределить действие в контроллере, определенном Rails Engine.
Похоже, мне нужно запросить исходный файл перед повторным открытием класса, вот так:
require File.join(RAILS_ROOT, 'vendor/plugins/myplugin/app/controllers/some_controller')
class SomeController
def index
render :text => 'this is my index'
end
end
Это имеет смысл, но это требует довольно уродливо. Есть ли какая-то магия Rails, которая позволила бы мне избежать первоначального требования?
Решение
Это полное предположение ...
Похоже, проблема синхронизации времени загрузки. Например, ваш файл загружается перед плагином. Где находится ваше действие? Config / инициализаторы? Lib?
Я не уверен, когда загрузится Rails Engines, поэтому поэкспериментируйте с расположением (должно работать, поместив его в lib).
Или, что еще лучше, создайте свой собственный плагин с изменениями и убедитесь, что он загружается после оригинала.
И вы, вероятно, хотите что-то более похожее:
SomeController.class_eval do
def index
...
end
end