module Sentry::Rails::ActiveJobExtensions

def capture_and_reraise_with_sentry(scope, &block)

def capture_and_reraise_with_sentry(scope, &block)
  scope.set_transaction_name(self.class.name)
  transaction =
    if is_a?(::Sentry::SendEventJob)
      nil
    else
      Sentry.start_transaction(name: scope.transaction_name, op: "active_job")
    end
  scope.set_span(transaction) if transaction
  return_value = block.call
  finish_sentry_transaction(transaction, 200)
  return_value
rescue Exception => e # rubocop:disable Lint/RescueException
  finish_sentry_transaction(transaction, 500)
  Sentry::Rails.capture_exception(
    e,
    extra: sentry_context,
    tags: {
      job_id: job_id,
      provider_job_id:provider_job_id
    }
  )
  raise e
end