application_controller.rb 875 B

12345678910111213141516171819202122232425262728293031
  1. # frozen_string_literal: true
  2. require './lib/api_error/base_error'
  3. class API::ApplicationController < ActionController::API
  4. before_action :set_default_response_format
  5. rescue_from StandardError, with: :handle_unhandled_api_error
  6. def not_found
  7. error = APIError::BaseError.new('The requested resource was not found')
  8. render_error(error, :not_found)
  9. end
  10. private
  11. def handle_unhandled_api_error(err)
  12. Rails.logger.error("Unhandled API Error: #{err}\n#{err.backtrace.join("\n")}")
  13. error = APIError::BaseError.new('An unhandled exception occurred.', internal_error: err)
  14. render_error(error)
  15. end
  16. def render_error(error, status = :internal_server_error)
  17. render json: {errors: [{message: error.message, type: error.type}]}, status: status
  18. end
  19. def set_default_response_format
  20. request.format = :json
  21. end
  22. end