class Gris::Middleware::ErrorHandlers

Public Class Methods

new(app) click to toggle source
# File lib/gris/middleware/error_handlers.rb, line 4
def initialize(app)
  @app = app
end

Public Instance Methods

call(env) click to toggle source
# File lib/gris/middleware/error_handlers.rb, line 8
def call(env)
  response = @app.call env
  case response[0]
  when 400..500
    format_error_response response
  else
    response
  end
rescue RuntimeError => e
  error = { status: 500, message: e.message }
  error_response error.to_json, 500
rescue ::ActiveRecord::RecordNotFound => e
  error = { status: 404, message: e.message }
  error_response error.to_json, 404
rescue ::ActiveRecord::RecordInvalid => e
  error = { status: 409, message: e.message }
  error_response error.to_json, 409
end

Private Instance Methods

error_response(message, status, headers = {}) click to toggle source
# File lib/gris/middleware/error_handlers.rb, line 38
def error_response(message, status, headers = {})
  Rack::Response.new([message], status, headers).finish
end
format_error_response(response) click to toggle source
# File lib/gris/middleware/error_handlers.rb, line 29
def format_error_response(response)
  if response[2].respond_to? :body
    response
  else
    error = { status: response[0], message: response[2] }
    error_response(error.to_json, response[0], response[1])
  end
end