Нужно ли мне запрашивать оригинальный файл при переопределении контроллера из Rails Engine?

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

  •  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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top