Sha256: 70da3e3a72cfa41a1671102dac25917ac967810ffbb3ec62963ec2dfcf64a33a

Contents?: true

Size: 913 Bytes

Versions: 9

Compression:

Stored size: 913 Bytes

Contents

# Implementation courtesy of db-charmer.
module Octopus
  module AbstractAdapter
    module OctopusShard
      class InstrumenterDecorator < ActiveSupport::ProxyObject
        def initialize(adapter, instrumenter)
          @adapter = adapter
          @instrumenter = instrumenter
        end

        def instrument(name, payload = {}, &block)
          payload[:octopus_shard] ||= @adapter.octopus_shard
          @instrumenter.instrument(name, payload, &block)
        end

        def method_missing(meth, *args, &block)
          @instrumenter.send(meth, *args, &block)
        end
      end

      def octopus_shard
        @config[:octopus_shard]
      end

      def initialize(*args)
        super
        @instrumenter = InstrumenterDecorator.new(self, @instrumenter)
      end
    end
  end
end

ActiveRecord::ConnectionAdapters::AbstractAdapter.send(:prepend, Octopus::AbstractAdapter::OctopusShard)

Version data entries

9 entries across 9 versions & 3 rubygems

Version Path
ar-octopus-ruby-3-0.11.3 lib/octopus/abstract_adapter.rb
ar-octopus-ruby-3-0.11.2 lib/octopus/abstract_adapter.rb
ar-octopus-0.10.2 lib/octopus/abstract_adapter.rb
ar-octopus-0.10.1 lib/octopus/abstract_adapter.rb
ar-octopus-0.10.0 lib/octopus/abstract_adapter.rb
ar-octopus-master-0.9.2.1 lib/octopus/abstract_adapter.rb
ar-octopus-0.9.2 lib/octopus/abstract_adapter.rb
ar-octopus-0.9.1 lib/octopus/abstract_adapter.rb
ar-octopus-0.9.0 lib/octopus/abstract_adapter.rb