Я разобрался в проблеме. Это была проблема с порядком загрузки. Мой Engine::AnswersController
загружался до моего Engine::ApplicationController
. И в моем коде я наследовал только от ApplicationController
. Это означает, что, поскольку Engine::AnswerController
не знал о Engine::ApplicationController
, он ошибочно наследовал от ApplicationController
основного приложения, а не от ApplicationController
движка.
Исправление состояло в том, чтобы заставить контроллер ответов наследовать от движка, а не от основного приложения, сделав пространство имен движка явным:
Engine::AnswersController < Engine::ApplicationController
Я понимаю, что эта проблема довольно своеобразна для моего приложения, но то, как я пришел к решению, может быть полезным для других. Если вы столкнулись с проблемой такого типа, перейдите в какой-либо тип отладчика (я использовал Pry ) и начните проверять вещи. В частности, проверьте, какие классы загружены, и внимательно посмотрите на цепочку наследования (т. Е. Engine::ApplicationController.ancestors
). Ищите все, что кажется странным.
Также, если проблема связана с движком, вам может потребоваться разместить отладчики как в движке, так и в основном приложении. Механизмы отладки могут быть трудными, поскольку ошибки, возникающие в механизме, могут не обязательно отображаться в главном приложении.
Большое спасибо tjbladez за помощь в выяснении этого.