Уведомить Airbrake при спасении исключения - PullRequest
1 голос
/ 17 апреля 2020

В нашем приложении Rails мы используем Airbrake, подключенный к хост-серверу Errbit.

Мы используем rescue и rescue_from во многих местах, где мы хотим обрабатывать любые исключения определенным образом, а затем мы регистрируем исключение перед возвратом ответа.

Некоторые примеры, которые мы имеем в нашем ApplicationController:

  rescue_from CanCan::AccessDenied do |e|
    Rails.logger.error "CanCan exception: #{e.message}"
    render 'errors/401', status: 401
  end

  rescue_from ActionController::InvalidAuthenticityToken do |e|
    Rails.logger.error "Authenticity exception: #{e.message}"
    render 'errors/csrf', status: 400
  end

И затем у нас также есть некоторые в отдельных методах, таких как API:

def try_request
  Response.new(yield)
rescue RestClient::Unauthorized,
       RestClient::ExceptionWithResponse,
       RestClient::InternalServerError,
       RestClient::BadRequest => e
  Rails.logger.error "API exception: #{e.message}"
  Response.new(e.response)
end

Однако, используя rescue, мы заметили, что Errbit больше не собирал наши исключения, потому что мы их захватывали ... имеет смысл ... но мы все еще хотим видеть это в наших отчетах Errbit!

Вы можете вручную уведомить Airbrake с помощью:

Airbrake.notify(e)

Но мы надеялись избежать необходимости вставлять этот код в каждый спасательный блок.

Возможно ли иметь заявление высокого уровня, которое может уведомить Airbrake при использовании rescue?

...