Sha256: bfb47f640306cc1cc941fa5d956961e0e7d3776c234c1353ebf8de0ccd6a7b3d

Contents?: true

Size: 743 Bytes

Versions: 3

Compression:

Stored size: 743 Bytes

Contents

require "json"
require "benchmark"

module Measures
  class Client
    def initialize(transport, client, owner)
      @client = client
      @transport = transport
      @owner = owner
    end

    def count(metric, data = {})
      data.merge!({ "count" => 1 })

      send(metric, data)
    end

    def time(metric, data = {}, &block)
      elapsed_time = Benchmark.realtime do
        yield if block_given?
      end

      data.merge!({ "time" => elapsed_time })

      send(metric, data)
    end

    private

    def send(metric, data = {})
      default = {
        "owner" => @owner,
        "client" => @client,
        "metric" => metric
      }

      default.merge!(data)

      @transport.send(default.to_json)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
measures-6.0.0 lib/measures/client.rb
measures-5.0.0 lib/measures/client.rb
measures-4.0.0 lib/measures/client.rb