Sha256: 7e47bf7e42e651d6faee1f02d8a4ed7048b7a0f34ddcd3300ad377a7d230bd99

Contents?: true

Size: 1.18 KB

Versions: 6

Compression:

Stored size: 1.18 KB

Contents

# frozen_string_literal: true

module StatsD::Instrument::Helpers
  def capture_statsd_datagrams(client: nil, &block)
    client ||= StatsD.singleton_client
    case client
    when StatsD.legacy_singleton_client
      capture_statsd_metrics_on_legacy_client(&block)
    when StatsD::Instrument::Client
      client.capture(&block)
    else
      raise ArgumentError, "Don't know how to capture StatsD datagrams from #{client.inspect}!"
    end
  end

  # For backwards compatibility
  alias_method :capture_statsd_calls, :capture_statsd_datagrams

  def capture_statsd_metrics_on_legacy_client(&block)
    capture_backend = StatsD::Instrument::Backends::CaptureBackend.new
    with_capture_backend(capture_backend, &block)
    capture_backend.collected_metrics
  end

  private

  def with_capture_backend(backend)
    if StatsD.legacy_singleton_client.backend.is_a?(StatsD::Instrument::Backends::CaptureBackend)
      backend.parent = StatsD.legacy_singleton_client.backend
    end

    old_backend = StatsD.legacy_singleton_client.backend
    begin
      StatsD.legacy_singleton_client.backend = backend
      yield
    ensure
      StatsD.legacy_singleton_client.backend = old_backend
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
statsd-instrument-2.9.2 lib/statsd/instrument/helpers.rb
statsd-instrument-2.9.1 lib/statsd/instrument/helpers.rb
statsd-instrument-2.9.0 lib/statsd/instrument/helpers.rb
statsd-instrument-2.8.0 lib/statsd/instrument/helpers.rb
statsd-instrument-2.7.1 lib/statsd/instrument/helpers.rb
statsd-instrument-2.7.0 lib/statsd/instrument/helpers.rb