Sha256: 115968e65bea15a1e2871046d7d69e65d7afc9a632ac5069bee4f16fffa218e7

Contents?: true

Size: 965 Bytes

Versions: 11

Compression:

Stored size: 965 Bytes

Contents

# frozen_string_literal: true

require 'aws-sdk-core'
require 'active_support/notifications'

module Aws
  module Rails
    # Instruments client operation calls for ActiveSupport::Notifications
    # Each client operation will produce an event with name:
    # <operation>.<service>.aws
    # @api private
    class Notifications < Seahorse::Client::Plugin
      def add_handlers(handlers, _config)
        # This plugin needs to be first
        # which means it is called first in the stack, to start recording time,
        # and returns last
        handlers.add(Handler, step: :initialize, priority: 99)
      end

      class Handler < Seahorse::Client::Handler
        def call(context)
          event_name = "#{context.operation_name}.#{context.config.api.metadata['serviceId']}.aws"
          ActiveSupport::Notifications.instrument(event_name, context: context) do
            @handler.call(context)
          end
        end
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
aws-sdk-rails-4.1.0 lib/aws/rails/notifications.rb
aws-sdk-rails-4.0.3 lib/aws/rails/notifications.rb
aws-sdk-rails-4.0.2 lib/aws/rails/notifications.rb
aws-sdk-rails-4.0.1 lib/aws/rails/notifications.rb
aws-sdk-rails-4.0.0 lib/aws/rails/notifications.rb
aws-sdk-rails-3.13.0 lib/aws/rails/notifications.rb
aws-sdk-rails-3.12.0 lib/aws/rails/notifications.rb
aws-sdk-rails-3.11.0 lib/aws/rails/notifications.rb
aws-sdk-rails-3.10.0 lib/aws/rails/notifications.rb
aws-sdk-rails-3.9.1 lib/aws/rails/notifications.rb
aws-sdk-rails-3.9.0 lib/aws/rails/notifications.rb