class Atatus::Spies::DynamoDBSpy

@api private

Public Class Methods

without_net_http() { || ... } click to toggle source
# File lib/atatus/spies/dynamo_db.rb, line 25
def self.without_net_http
  return yield unless defined?(NetHTTPSpy)

  Atatus::Spies::NetHTTPSpy.disable_in do
    yield
  end
end

Public Instance Methods

install() click to toggle source
# File lib/atatus/spies/dynamo_db.rb, line 33
def install
  if defined?(::Aws) && defined?(::Aws::DynamoDB) && defined?(::Aws::DynamoDB::Client)

    ::Aws::DynamoDB::Client.class_eval do
      # Alias all available operations
      api.operation_names.each do |operation_name|
        alias :"#{operation_name}_without_apm" :"#{operation_name}"

        define_method(operation_name) do |params = {}, options = {}|
          Atatus.with_span(operation_name, 'db', subtype: 'dynamodb', action: operation_name) do
            Atatus::Spies::DynamoDBSpy.without_net_http do
              original_method = method("#{operation_name}_without_apm")
              original_method.call(params, options)
            end
          end
        end
      end
    end

  end
end