Link Search Menu Expand Document


Trifle::Stats comes with couple class level methods that are shorthands for operations. They do it’s thing to understand what type of operation are you trying to perform. If you pass in at parameter, it will know you need timeline operations, etc. There are two main methods track and values. As you guessed, track tracks and values values. Duh.

Track values

Available ranges are :minute, :hour, :day, :week, :month, :quarter, :year.

Track your first metrics

Trifle::Stats.track(key: 'event::logs', at:, values: {count: 1, duration: 2, lines: 241})
=> [{2021-01-25 16:00:00 +0100=>{:count=>1, :duration=>2, :lines=>241}}, {2021-01-25 00:00:00 +0100=>{:count=>1, :duration=>2, :lines=>241}}]

Then do it few more times

Trifle::Stats.track(key: 'event::logs', at:, values: {count: 1, duration: 1, lines: 56})
=> [{2021-01-25 16:00:00 +0100=>{:count=>1, :duration=>1, :lines=>56}}, {2021-01-25 00:00:00 +0100=>{:count=>1, :duration=>1, :lines=>56}}]
Trifle::Stats.track(key: 'event::logs', at:, values: {count: 1, duration: 5, lines: 361})
=> [{2021-01-25 16:00:00 +0100=>{:count=>1, :duration=>5, :lines=>361}}, {2021-01-25 00:00:00 +0100=>{:count=>1, :duration=>5, :lines=>361}}]

You can also store nested counters like

Trifle::Stats.track(key: 'event::logs', at:, values: {
  count: 1,
  duration: {
    parsing: 21,
    compression: 8,
    upload: 1
  lines: 25432754

Get values

Retrieve your values for specific range

Trifle::Stats.values(key: 'event::logs', from:, to:, range: :day)
=> [{2021-01-25 00:00:00 +0100=>{"count"=>3, "duration"=>8, "lines"=>658}}]

Honestly, thats it. Now instead of building your own analytics, go do something useful. You can buy me coffee later. K, thx, bye!