Ответ 1
ActionController:: Metal - это, по сути, урезанная версия ActionController:: Base. Он в основном используется для API, поскольку он не включает модули, которые обычно поставляются с контроллером Rails, что повышает производительность (даже 40%, в зависимости от варианта использования https://gist.github.com/drogus/738168).
Учитывая тот факт, что он включает только самые основные функции контроллера, вы можете добавлять только необходимые функции для своих собственных классов. Например, можно добавить функции рендеринга, токена и фильтрации:
class ApiGenericController < ActionController::Metal
include ActionController::Rendering
include ActionController::Renderers::All
include ActionController::MimeResponds
include ActionController::ImplicitRender
include AbstractController::Callbacks
include ActionController::HttpAuthentication::Token::ControllerMethods
Это в основном быстрый способ обеспечить наилучшее использование ваших вычислительных ресурсов.