Что на самом деле делает Rails ActionController:: Metal

Я хочу понять контроллер Rails ActionController:: Metal. Я прочитал об этом здесь, но не понимаю его полностью.

Он используется для создания API, но мы также можем создавать API без него.

Итак, что он делает и насколько это полезно?

Может ли кто-нибудь объяснить это примерами?

Ответ 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

Это в основном быстрый способ обеспечить наилучшее использование ваших вычислительных ресурсов.