class Flipper::Adapters::Instrumented

Internal: Adapter that wraps another adapter and instruments all adapter operations.

Constants

InstrumentationName

Private: The name of instrumentation events.

Attributes

instrumenter[R]

Private: What is used to instrument all the things.

name[R]

Public: The name of the adapter.

Public Class Methods

new(adapter, options = {}) click to toggle source

Internal: Initializes a new adapter instance.

adapter - Vanilla adapter instance to wrap.

options - The Hash of options.

:instrumenter - What to use to instrument all the things.
Calls superclass method
# File lib/flipper/adapters/instrumented.rb, line 27
def initialize(adapter, options = {})
  super(adapter)
  @adapter = adapter
  @name = :instrumented
  @instrumenter = options.fetch(:instrumenter, Instrumenters::Noop)
end

Public Instance Methods

add(feature) click to toggle source

Public

# File lib/flipper/adapters/instrumented.rb, line 47
def add(feature)
  payload = {
    operation: :add,
    adapter_name: @adapter.name,
    feature_name: feature.name,
  }

  @instrumenter.instrument(InstrumentationName, payload) do |payload|
    payload[:result] = @adapter.add(feature)
  end
end
clear(feature) click to toggle source

Public

# File lib/flipper/adapters/instrumented.rb, line 73
def clear(feature)
  payload = {
    operation: :clear,
    adapter_name: @adapter.name,
    feature_name: feature.name,
  }

  @instrumenter.instrument(InstrumentationName, payload) do |payload|
    payload[:result] = @adapter.clear(feature)
  end
end
disable(feature, gate, thing) click to toggle source

Public

# File lib/flipper/adapters/instrumented.rb, line 136
def disable(feature, gate, thing)
  payload = {
    operation: :disable,
    adapter_name: @adapter.name,
    feature_name: feature.name,
    gate_name: gate.name,
  }

  @instrumenter.instrument(InstrumentationName, payload) do |payload|
    payload[:result] = @adapter.disable(feature, gate, thing)
  end
end
enable(feature, gate, thing) click to toggle source

Public

# File lib/flipper/adapters/instrumented.rb, line 122
def enable(feature, gate, thing)
  payload = {
    operation: :enable,
    adapter_name: @adapter.name,
    feature_name: feature.name,
    gate_name: gate.name,
  }

  @instrumenter.instrument(InstrumentationName, payload) do |payload|
    payload[:result] = @adapter.enable(feature, gate, thing)
  end
end
features() click to toggle source

Public

# File lib/flipper/adapters/instrumented.rb, line 35
def features
  payload = {
    operation: :features,
    adapter_name: @adapter.name,
  }

  @instrumenter.instrument(InstrumentationName, payload) do |payload|
    payload[:result] = @adapter.features
  end
end
get(feature) click to toggle source

Public

# File lib/flipper/adapters/instrumented.rb, line 86
def get(feature)
  payload = {
    operation: :get,
    adapter_name: @adapter.name,
    feature_name: feature.name,
  }

  @instrumenter.instrument(InstrumentationName, payload) do |payload|
    payload[:result] = @adapter.get(feature)
  end
end
get_all() click to toggle source
# File lib/flipper/adapters/instrumented.rb, line 110
def get_all
  payload = {
    operation: :get_all,
    adapter_name: @adapter.name,
  }

  @instrumenter.instrument(InstrumentationName, payload) do |payload|
    payload[:result] = @adapter.get_all
  end
end
get_multi(features) click to toggle source
# File lib/flipper/adapters/instrumented.rb, line 98
def get_multi(features)
  payload = {
    operation: :get_multi,
    adapter_name: @adapter.name,
    feature_names: features.map(&:name),
  }

  @instrumenter.instrument(InstrumentationName, payload) do |payload|
    payload[:result] = @adapter.get_multi(features)
  end
end
remove(feature) click to toggle source

Public

# File lib/flipper/adapters/instrumented.rb, line 60
def remove(feature)
  payload = {
    operation: :remove,
    adapter_name: @adapter.name,
    feature_name: feature.name,
  }

  @instrumenter.instrument(InstrumentationName, payload) do |payload|
    payload[:result] = @adapter.remove(feature)
  end
end