Sha256: 47257a702571a745622b0b4e3e6e2ecbc087491966fb9c2a89ea0537fbdcf61b

Contents?: true

Size: 1.32 KB

Versions: 8

Compression:

Stored size: 1.32 KB

Contents

module Api::Error
  extend ActiveSupport::Concern

  included do
    rescue_from "Exception" do |exception|
      logger.error exception.message
      logger.error exception.backtrace.join("\n")
      respond_api_error(:internal_server_error, message: "server_error",
                                                type: exception.class.to_s,
                                                detail: exception.message)
    end

    rescue_from "ActiveRecord::RecordNotFound" do |exception|
      respond_api_error(:not_found, message: "record_not_found",
                                    detail: exception.message)
    end

    rescue_from "ActiveModel::ForbiddenAttributesError" do |exception|
      respond_api_error(:bad_request, message: "protected_attributes",
                                      detail: exception.message)
    end

    rescue_from "ActiveRecord::RecordInvalid" do |exception|
      respond_api_error(:bad_request, message: "invalid_attributes",
                                      errors: exception.record.errors)
    end

    rescue_from "PowerApi::InvalidVersion" do |exception|
      respond_api_error(:bad_request, message: "invalid_api_version",
                                      errors: exception.message)
    end
  end

  def respond_api_error(status, error = {})
    render json: error, status: status
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
power_api-2.1.1 app/controllers/concerns/api/error.rb
power_api-2.1.0 app/controllers/concerns/api/error.rb
power_api-2.0.2 app/controllers/concerns/api/error.rb
power_api-2.0.1 app/controllers/concerns/api/error.rb
power_api-2.0.0 app/controllers/concerns/api/error.rb
power_api-1.0.0 app/controllers/concerns/api/error.rb
power_api-0.2.0 app/controllers/concerns/api/error.rb
power_api-0.1.0 app/controllers/concerns/api/error.rb