class ElasticAPM::Spies::ResqueSpy

@api private

def install

def install
  install_perform_spy
end

def install_perform_spy

def install_perform_spy
  ::Resque::Job.class_eval do
    alias :perform_without_elastic_apm :perform
    def perform
      name = @payload && @payload['class']&.to_s
      transaction = ElasticAPM.start_transaction(name, TYPE)
      perform_without_elastic_apm
      transaction.done 'success'
    rescue ::Exception => e
      ElasticAPM.report(e, handled: false)
      transaction.done 'error' if transaction
      raise
    ensure
      ElasticAPM.end_transaction
    end
  end
end

def perform

def perform
  name = @payload && @payload['class']&.to_s
  transaction = ElasticAPM.start_transaction(name, TYPE)
  perform_without_elastic_apm
  transaction.done 'success'
rescue ::Exception => e
  ElasticAPM.report(e, handled: false)
  transaction.done 'error' if transaction
  raise
ensure
  ElasticAPM.end_transaction
end