Весь код прекрасно работает во всех средах, кроме тестового режима.В тестовом режиме каким-то образом класс является подклассом класса TopLevel вместо класса модуля.
# app/controllers/base_controller.rb
class BaseController < ApplicationController
end
# app/controllers/api/base_controller.rb
module API
class BaseController < BaseController
end
end
# app/controllers/api/v2/base_controller.rb
# style 1
# this style cause problem when run rspec, API::V2::BaseController now
# subclass from BaseController, which should be API::BaseController
module API
module V2
class BaseController < BaseController
end
end
end
# style 2
# this style make subclass from correct class, but kinda ugly in code.
module API
module V2
class BaseController < API::BaseController
end
end
end
решение 1: Следуйте стилю № 2, но мне это не нравится и я ищудля лучшего способа.
решение 2 не используйте BaseController в TopLevel, вместо этого переименуйте его в другие, например OtherBaseController, чтобы я мог кодировать стиль 1. Поскольку rails не найдет BaseController в TopLevel.