Module: JsonApiServer::Controller::ErrorHandling

Defined in:
lib/json_api_server/controller/error_handling.rb

Overview

Handles common controller errors. Returns JsonApi errors http://jsonapi.org/format/#errors.

Usage

To use, include the JsonApiServer::Controller::ErrorHandling module in your base API controller class:

i.e.,

class Api::BaseController < ApplicationController
include JsonApiServer::Controller::ErrorHandling
end

I18n

Messages are defined in config/locales/en.yml.

Customize ActiveRecord::RecordNotFound and ActiveRecord::RecordNotUnique messages to reference a resource by name.

Example:

Given a sandwiches controller...

class Api::V1::SandwichesController < Api::BaseController ... end

config/locales/en.yml

en:

json_api_server:
 controller:
   sandwiches:
     name: 'sandwich'

messages now become:

404 => "This sandwich does not exist."

409 => "This sandwich already exists."

Class Method Summary collapse

Class Method Details

.included(base) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/json_api_server/controller/error_handling.rb', line 41

def self.included(base)
  # Overrides of exception handling.
  base.rescue_from StandardError, with: :render_500
  base.rescue_from JsonApiServer::BadRequest, with: :render_400
  base.rescue_from ActionController::BadRequest, with: :render_400
  base.rescue_from ActiveRecord::RecordNotFound, with: :render_404
  base.rescue_from ActiveRecord::RecordNotUnique, with: :render_409
  base.rescue_from ActionController::RoutingError, with: :render_404
  base.rescue_from ActionController::UrlGenerationError, with: :render_404
  base.rescue_from ActionController::UnknownController, with: :render_404
  base.rescue_from ActionController::UnknownFormat, with: :render_unknown_format
end