Kashiftufail
Kashiftufail

Reputation: 10885

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?

Upvotes: 14

Views: 4337

Answers (1)

andreimarinescu
andreimarinescu

Reputation: 3641

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.

Upvotes: 28

Related Questions