Ruby on rails 从Rails引擎重写控制器时是否需要原始文件?

Ruby on rails 从Rails引擎重写控制器时是否需要原始文件?,ruby-on-rails,rails-engines,Ruby On Rails,Rails Engines,我试图覆盖Rails引擎定义的控制器中的操作 在重新打开类之前,我似乎需要原始文件,如下所示: 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

我试图覆盖Rails引擎定义的控制器中的操作

在重新打开类之前,我似乎需要原始文件,如下所示:

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魔法可以让我避免最初的需求?

这是一个完整的猜测

似乎更像是一个加载时间问题。与中一样,您的文件是在插件之前加载的。你的行动地点在哪里?配置/初始化器?自由党

我不确定Rails引擎何时被加载,所以请使用该位置(应该通过将其放在lib中来工作)

或者,更好的做法是,使用更改创建您自己的插件,并确保它在原始插件之后加载

你可能想要更像这样的东西:

SomeController.class_eval do

  def index
    ...
  end

end

这是一个完全的猜测

似乎更像是一个加载时间问题。与中一样,您的文件是在插件之前加载的。你的行动地点在哪里?配置/初始化器?自由党

我不确定Rails引擎何时被加载,所以请使用该位置(应该通过将其放在lib中来工作)

或者,更好的做法是,使用更改创建您自己的插件,并确保它在原始插件之后加载

你可能想要更像这样的东西:

SomeController.class_eval do

  def index
    ...
  end

end

您可以通过更改
ActiveSupport#require_或_load
自动设置,请参阅您可以通过更改
ActiveSupport#require_或_load
自动设置,请参阅