Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What actually does Rails ActionController::Metal

I want to understand about Rails ActionController::Metal controller. I have read about it here but don't understand it completely.

It is used to build API's but we can build API's without it as well.

So what does it exactly do and how much is it useful?

Can please anyone explain it with examples?

like image 983
Kashiftufail Avatar asked Aug 02 '13 19:08

Kashiftufail


1 Answers

ActionController::Metal is essentially a stripped down version of ActionController::Base. It's mainly used for API's because it doesn't include modules that typically come with a Rails controller, thus improving performance (even 40%, depending on the use case https://gist.github.com/drogus/738168).

Given the fact that it only includes the most basic controller functionality allows you to only add the needed features for your own classes. For example, one can add rendering, token auth and filtering functionality:

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

It's basically a quick method to ensure that you make best use of your compute resources.

like image 136
andreimarinescu Avatar answered Oct 30 '22 07:10

andreimarinescu