class StackifyRubyAPM::Spies::DynamoDBSpy
@api private
Constants
- TYPE
Public Instance Methods
install()
click to toggle source
rubocop:disable Metrics/CyclomaticComplexity
# File lib/stackify_apm/spies/dynamo_db.rb, line 10 def install Aws::DynamoDB::Client.class_eval do # Alias all available operations api.operation_names.each do |operation_name| alias_method "#{operation_name}_without_apm", "#{operation_name}" define_method(operation_name) do |params = {}, options = {}| original_method = method("#{operation_name}_without_apm") return original_method.call(params, options) unless StackifyRubyAPM.current_transaction result = nil begin name = operation_name ctx = Span::Context.new( CATEGORY: 'Database', SUBCATEGORY: 'DynamoDB', ACTION: operation_name, URL: self.config.endpoint, ) rescue Exception => e StackifyRubyAPM.agent.error "[DynamoDBSpy] Error: creating span context." StackifyRubyAPM.agent.error "[DynamoDBSpy] #{e.inspect}" return original_method.call(params, options) end StackifyRubyAPM.span name, TYPE, context: ctx do result = original_method.call(params, options) return result end end end end end