module Apress::Api::ApiController::Rescue

Private Instance Methods

bad_request(exception = nil) click to toggle source
# File lib/apress/api/api_controller/rescue.rb, line 41
def bad_request(exception = nil)
  render_error(400, exception)
end
forbidden(exception = nil) click to toggle source
# File lib/apress/api/api_controller/rescue.rb, line 37
def forbidden(exception = nil)
  render_error(403, exception)
end
log_error(exception) click to toggle source
# File lib/apress/api/api_controller/rescue.rb, line 79
def log_error(exception)
  Rails.logger.error(exception.message)
  Rails.logger.error(exception.backtrace.join("/n")) if exception.backtrace.present?
end
not_found(exception = nil) click to toggle source
# File lib/apress/api/api_controller/rescue.rb, line 33
def not_found(exception = nil)
  render_error(404, exception)
end
parameter_missing(exception) click to toggle source
# File lib/apress/api/api_controller/rescue.rb, line 64
def parameter_missing(exception)
  @status = 400
  @errors = [{exception.param => 'missing'}]
  render 'apress/api/shared/parameter_missing_errors', status: @status
end
render_error(status, exception = nil) click to toggle source
# File lib/apress/api/api_controller/rescue.rb, line 70
def render_error(status, exception = nil)
  @status = status
  @exception = exception

  log_error(exception) if exception

  render "apress/api/shared/error", status: status
end
server_error(exception) click to toggle source
# File lib/apress/api/api_controller/rescue.rb, line 29
def server_error(exception)
  render_error(500, exception)
end
show_errors?() click to toggle source
# File lib/apress/api/api_controller/rescue.rb, line 84
def show_errors?
  soft_environment?
end
soft_environment?() click to toggle source
# File lib/apress/api/api_controller/rescue.rb, line 88
def soft_environment?
  Rails.env.staging? || !Rails.env.production?
end
unauthorized(exception = nil) click to toggle source
# File lib/apress/api/api_controller/rescue.rb, line 45
def unauthorized(exception = nil)
  render_error(401, exception)
end
unprocessable(exception_or_errors) click to toggle source
# File lib/apress/api/api_controller/rescue.rb, line 49
def unprocessable(exception_or_errors)
  @status = 422

  @errors =
    if exception_or_errors.respond_to?(:record)
      exception_or_errors.record.errors
    elsif exception_or_errors.is_a?(StandardError)
      {message: exception_or_errors.message}
    else
      exception_or_errors
    end
  @errors = Array.wrap(@errors)
  render 'apress/api/shared/unprocessable_errors', status: @status
end