# frozen_string_literal: true require './lib/api_error/base_error' class API::ApplicationController < ActionController::API before_action :set_default_response_format rescue_from StandardError, with: :handle_unhandled_api_error def not_found error = APIError::BaseError.new('The requested resource was not found') render_error(error, :not_found) end private def handle_unhandled_api_error(err) msg = "Unhandled API Error: #{err}\n#{err.backtrace.join("\n")}" Rails.logger.error(msg) error = APIError::BaseError.new( 'An unhandled exception occurred.', internal_error: err, ) render_error(error) end def render_error(error, status = :internal_server_error) render json: { errors: [{message: error.message, type: error.type}], }, status: status end def set_default_response_format request.format = :json end end