Updated

app/controllers/api/concerns / request_exception_handler.rb

A
54 lines of codes
8 methods
3.6 complexity/method
2 churn
28.77 complexity
0 duplications
module Api::Concerns::RequestExceptionHandler
  1. Api::Concerns::RequestExceptionHandler has no descriptive comment
extend ActiveSupport::Concern included do rescue_from ActiveRecord::RecordInvalid, with: :render_record_invalid end private def handle_with_exception
  1. Api::Concerns::RequestExceptionHandler#handle_with_exception has approx 7 statements
yield rescue ActiveRecord::RecordNotFound => e
  1. Api::Concerns::RequestExceptionHandler#handle_with_exception has the variable name 'e' Locations: 0 1
log_handled_error(e)
  1. Api::Concerns::RequestExceptionHandler#handle_with_exception calls 'log_handled_error(e)' 2 times Locations: 0 1
render_not_found_error('Resource could not be found') rescue ActionController::ParameterMissing => e
  1. Api::Concerns::RequestExceptionHandler#handle_with_exception has the variable name 'e' Locations: 0 1
log_handled_error(e)
  1. Api::Concerns::RequestExceptionHandler#handle_with_exception calls 'log_handled_error(e)' 2 times Locations: 0 1
render_could_not_create_error(e.message) ensure # to address the thread variable leak issues in Puma/Thin webserver Current.reset end def render_unauthorized(message) render json: { error: message }, status: :unauthorized end def render_not_found_error(message) render json: { error: message }, status: :not_found end def render_could_not_create_error(message) render json: { error: message }, status: :unprocessable_entity end def render_payment_required(message) render json: { error: message }, status: :payment_required end def render_internal_server_error(message) render json: { error: message }, status: :internal_server_error end def render_record_invalid(exception) log_handled_error(exception) render json: { message: exception.record.errors.full_messages.join(', '),
  1. Api::Concerns::RequestExceptionHandler#render_record_invalid calls 'exception.record' 2 times Locations: 0 1
  2. Api::Concerns::RequestExceptionHandler#render_record_invalid calls 'exception.record.errors' 2 times Locations: 0 1
attributes: exception.record.errors.attribute_names
  1. Api::Concerns::RequestExceptionHandler#render_record_invalid calls 'exception.record' 2 times Locations: 0 1
  2. Api::Concerns::RequestExceptionHandler#render_record_invalid calls 'exception.record.errors' 2 times Locations: 0 1
}, status: :unprocessable_entity end def log_handled_error(exception) logger.info("Handled error: #{exception.inspect}") end end