Sha256: 5cf7b441efa7aa1bca3214ede05ec311dcf0576a9638c08ae935277c441bd5cd
Contents?: true
Size: 1.12 KB
Versions: 6
Compression:
Stored size: 1.12 KB
Contents
module Gris class Middleware class ErrorHandlers def initialize(app) @app = app end 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 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 def error_response(message, status, headers = {}) Rack::Response.new([message], status, headers).finish end end end end
Version data entries
6 entries across 6 versions & 1 rubygems