Я создаю два двигателя. Engine Two построен на Engine One . Я использую оба этих двигателя в приложении , которое я создаю. Я использовал class_eval
Engine метод переопределения , упомянутый в руководстве по рельсам.
# app/models/active_stix/tool_override.rb
ActiveStix::Tool.class_eval do
# Model override code here
end
Переопределение требуется из lib / engine_name / engine.rb следующим образом
initializer "active_attack.update_stix" do |app|
engine_root = File.expand_path("../../..", __FILE__)
Dir.glob(engine_root + "/app/overrides/**/*_override*.rb").each do |c|
require_dependency(c)
end
end
В разработке все работает как положено, но когда я запускаю rails zeitwerk:check
или пытаюсь развернуть приложение в Heroku, я получаю следующую ошибку
ожидаемый файл ~ / .rvm / gems / ruby -2.7.0 / gems / active_attack-0.1.14 / app / overrides / models / active_stix / tool_override.rb для определения константы Models :: ActiveStix :: ToolOverride
Похоже, это связано на Проблема Rails 36100 , но эта проблема, похоже, описывает, как основное приложение Rails может переопределять модели Engine. Кажется, он не работает для одного двигателя, переопределяющего модели другого двигателя.