class FnordmetricClient
Constants
- DEFAULT_EVENT_TTL
- DEFAULT_OVERFLOW_LIMIT
- DEFAULT_PREFIX
- VERSION
Public Class Methods
new(opts ={})
click to toggle source
# File lib/fnordmetric-client.rb, line 10 def initialize(opts ={}) @redis = opts[:redis] raise ArgumentError, "Bad :redis passed" unless %w{hincrby set lpush expire llen}.all?{|m| @redis.respond_to?(m) } @prefix = opts[:prefix] || DEFAULT_PREFIX @event_ttl = opts[:event_ttl] || DEFAULT_EVENT_TTL @overflow_limit = opts[:overflow_limit] || DEFAULT_OVERFLOW_LIMIT end
Public Instance Methods
event(type, args = {})
click to toggle source
# File lib/fnordmetric-client.rb, line 19 def event(type, args = {}) push_event({'_type' => type.to_s}.merge(args)) end
Private Instance Methods
get_next_uuid()
click to toggle source
# File lib/fnordmetric-client.rb, line 41 def get_next_uuid SecureRandom.hex(16) end
key(*elements)
click to toggle source
# File lib/fnordmetric-client.rb, line 25 def key(*elements) elements.map(&:to_s).unshift(@prefix).join('-') end
push_event(event_data)
click to toggle source
# File lib/fnordmetric-client.rb, line 29 def push_event(event_data) return if @redis.llen(key(:queue)) >= @overflow_limit event_id = get_next_uuid @redis.hincrby(key(:testdata), "events_received", 1) @redis.hincrby(key(:stats), "events_received", 1) @redis.set(key(:event, event_id), event_data.to_json) @redis.expire(key(:event, event_id), @event_ttl) @redis.lpush(key(:queue), event_id) event_id end