# frozen_string_literal: true # require "minato_logger" module MinatoErrorHandler module ErrorHandler extend ActiveSupport::Concern attr_accessor :default_error_class included do rescue_from StandardError, with: :handle end private def handle(exception) error = parse_error(exception) report_error(error) render json: { errors: [error.as_json] }, status: error.status_code end def parse_error(error) return error if error.is_a?(MinatoErrorHandler::MinatoError) error_class = default_error_class || MinatoErrorHandler::MinatoError minato_error = error_class.new minato_error.caused_by = error.full_message minato_error.set_backtrace(error.backtrace) minato_error end def report_error(error) Rails.logger.error(error.as_json) end end end