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