Целесообразно исключить ActionController::Base, если гем в приложении зависит от Rails
У меня небольшая дилемма, когда некоторые люди предлагают исключить ActionController::Base из наследования дерева контроллеров и использовать вместо этого ActionController::Metal, чтобы ускорить выполнение запросов, однако основное приложение зависит от CMS Comfortable Mexican Sofa, который зависит от стека Rails.
Отсюда возникает вопрос:
- Будет ли изменение класса наследования иметь значение в этом случае? Зачем?
- Как проверить работоспособность контроллера спасибо.
1 ответ
ActionController::Metal на самом деле является дополнительной версией ActionController::Base. В него не входят утилиты для рендеринга представлений, частичных или других ответов, что повышает производительность. Люди сообщают о 25-кратном увеличении скорости по сравнению с обычными действиями Rails согласно блогам RubyOnRails. Но ActionContoller:Metal в основном используется для создания API, где вы можете вручную указать только те утилиты, которые требуются в приложении.
Например:
class ApiController < ActionController::Metal
include AbstractController::Rendering
include ActionView::Layouts
Вы можете измерить производительность действий контроллера, используя гем под названием rack-mini-profiler, или вы можете использовать для этого тестирование производительности rails.