class Atatus::Spies::RakeSpy

@api private

Public Instance Methods

execute(*args) click to toggle source
# File lib/atatus/spies/rake.rb, line 31
def execute(*args)
  agent = Atatus.start

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

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

  begin
    result = execute_without_apm(*args)

    transaction.result = 'success' if transaction
  rescue StandardError => e
    transaction.result = 'error' if transaction
    Atatus.report(e)

    raise
  ensure
    Atatus.end_transaction
    Atatus.stop
  end

  result
end
install() click to toggle source
# File lib/atatus/spies/rake.rb, line 25
def install
  if defined?(::Rake) && defined?(::Rake::Task)

    ::Rake::Task.class_eval do
      alias execute_without_apm execute

      def execute(*args)
        agent = Atatus.start

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

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

        begin
          result = execute_without_apm(*args)

          transaction.result = 'success' if transaction
        rescue StandardError => e
          transaction.result = 'error' if transaction
          Atatus.report(e)

          raise
        ensure
          Atatus.end_transaction
          Atatus.stop
        end

        result
      end
    end

  end
end