execute

in lib/elastic_apm/spies/rake.rb [26:54]


        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