class FnordMetric::API
Public Class Methods
new(opts={})
click to toggle source
# File lib/fnordmetric/api.rb, line 5 def initialize(opts={}) @@opts = FnordMetric.default_options(opts) connect end
Public Instance Methods
connect()
click to toggle source
# File lib/fnordmetric/api.rb, line 10 def connect @redis = Redis.connect(:url => @@opts[:redis_url]) end
disconnect()
click to toggle source
# File lib/fnordmetric/api.rb, line 28 def disconnect @redis.quit end
event(event_data)
click to toggle source
# File lib/fnordmetric/api.rb, line 14 def event(event_data) begin if event_data.is_a?(Hash) event_data = event_data.to_json else JSON.parse(event_data) # void ;) end rescue JSON::ParserError FnordMetric.log("event_lost: can't parse json") else push_event(get_next_uuid, event_data) end end
Private Instance Methods
get_next_uuid()
click to toggle source
# File lib/fnordmetric/api.rb, line 43 def get_next_uuid rand(8**32).to_s(36) end
push_event(event_id, event_data)
click to toggle source
# File lib/fnordmetric/api.rb, line 34 def push_event(event_id, event_data) prefix = @@opts[:redis_prefix] @redis.hincrby "#{prefix}-stats", "events_received", 1 @redis.set "#{prefix}-event-#{event_id}", event_data @redis.lpush "#{prefix}-queue", event_id @redis.expire "#{prefix}-event-#{event_id}", @@opts[:event_queue_ttl] event_id end