class FnordMetric::Event
Attributes
event_id[RW]
time[RW]
type[RW]
Public Class Methods
all(opts)
click to toggle source
def self.track!(event_type, event_data) end
# File lib/fnordmetric/web/event.rb, line 9 def self.all(opts) opts[:limit] ||= 100 range_opts = { :withscores => true } range_opts.merge!(:limit => [0,opts[:limit]]) if opts[:limit] events = opts[:redis].zrevrangebyscore( "#{opts[:namespace_prefix]}-timeline", '+inf', opts[:since]||'0', range_opts ) events = events[0..opts[:limit] - 1] unless events.first.is_a?(Array) events = events.in_groups_of(2).map do |event_id, ts| [event_id, Float(ts)] end end events.map do |event_id, ts| next if event_id.blank? find(event_id, opts).tap{ |e| e.time = "%.f" % ts } end end
by_session_key(_session_key, opts)
click to toggle source
# File lib/fnordmetric/web/event.rb, line 44 def self.by_session_key(_session_key, opts) session = Session.find(_session_key, opts) session.fetch_event_ids!(200).reject(&:blank?).map do |event_id| find(event_id, opts) end end
by_type(_type, opts)
click to toggle source
# File lib/fnordmetric/web/event.rb, line 35 def self.by_type(_type, opts) opts[:redis].lrange( "#{opts[:namespace_prefix]}-type-#{_type}", 0, 200).map do |event_id| next if event_id.blank? find(event_id, opts).tap{ |e| } end end
find(event_id, opts)
click to toggle source
# File lib/fnordmetric/web/event.rb, line 51 def self.find(event_id, opts) self.new(event_id, opts).tap do |event| event.fetch! end end
new(event_id, opts)
click to toggle source
# File lib/fnordmetric/web/event.rb, line 57 def initialize(event_id, opts) @opts = opts @event_id = event_id end
Public Instance Methods
data(key=nil)
click to toggle source
# File lib/fnordmetric/web/event.rb, line 84 def data(key=nil) key ? @data[key.to_s] : @data end
Also aliased as: []
fetch!()
click to toggle source
# File lib/fnordmetric/web/event.rb, line 62 def fetch! @data = JSON.parse(fetch_json).tap do |event| @type = event.delete("_type") end end
fetch_json()
click to toggle source
# File lib/fnordmetric/web/event.rb, line 68 def fetch_json @opts[:redis].get(redis_key) || "{}" end
id()
click to toggle source
# File lib/fnordmetric/web/event.rb, line 80 def id @event_id end
redis_key()
click to toggle source
# File lib/fnordmetric/web/event.rb, line 72 def redis_key [@opts[:redis_prefix], :event, @event_id].join("-") end
session_key()
click to toggle source
# File lib/fnordmetric/web/event.rb, line 76 def session_key @data["_session"] ? Digest::MD5.hexdigest(@data["_session"]) : nil end
to_json()
click to toggle source
# File lib/fnordmetric/web/event.rb, line 90 def to_json @data.merge!( :_type => @type, :_session_key => session_key, :_eid => @event_id, :_time => @time ) end