module ElasticAPM::Spies::RakeSpy::Ext

@api private

Public Instance Methods

execute(*args) click to toggle source
Calls superclass method
# File lib/elastic_apm/spies/rake.rb, line 27
def execute(*args)
  agent = ElasticAPM.start

  unless agent && agent.config.instrumented_rake_tasks.include?(name)
    return super(*args)
  end

  transaction =
    ElasticAPM.start_transaction("Rake::Task[#{name}]", 'Rake')

  begin
    result = super(*args)

    transaction&.result = 'success'
    transaction&.outcome = Transaction::Outcome::SUCCESS
  rescue StandardError => e
    transaction&.result = 'error'
    transaction&.outcome = Transaction::Outcome::FAILURE
    ElasticAPM.report(e)

    raise
  ensure
    ElasticAPM.end_transaction
    ElasticAPM.stop
  end

  result
end