# 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) Rails.logger.error("Unhandled API Error: #{err}\n#{err.backtrace.join("\n")}") 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