Własne statystyki / KPI

Może się komuś przyda: https://github.com/sevos/kpi

Pomaga zdefiniować raport i wysyła go mailem.
Reszta - w readme :wink:

Gem jest nieco zaktualizowany. Obecna wersja 0.5.3

Changelog:

  • Usunięte wsparcie dla ActionMailera - być może w przyszłości może pojawić się gem kpi-mailer
  • Zmienione nieco API definiowania raportów:

[code=ruby] class DailyKpiReport < KPI::Report
def users_count
result “Users count”, User.count, :description => “Total users count”
end

def today_registrations_count
  result "Today registrations count", User.where("created_at > ?", @time - 24.hours)
end

def total_income
  result "Total income", Order.sum(:total), :unit => 'EUR'
end

def today_income
  result "Today income", Order.where(:created_at => today).sum(:total), :unit => 'EUR'
end

private

def today
  ((time - 24.hours)..time)
end

end[/code]

  • MergedReport - pozwala na tworzenie raportów porównujących dwa lub więcej innych - przykład:

[code=ruby] today = DailyKpiReport.new
yesterday = DailyKpiReport.new(:time => 1.day.ago)
before_yesterday = DailyKpiReport.new(:time => 2.days.ago)
avg = KPI::MergedReport.new(today, yesterday, before_yesterday) do |*entries|
average = entries.map(&:value).inject(:+).to_f / entries.size
KPI::Entry.new “$$ (avg)”, average, :description => “Average value of $$”
end

avg.today_income.name

=> “Today income (avg)”

avg.today_income.value

zwraca średnią z 3 ostatnich dni :wink:

avg.today_income.description

=> nil # bo w raportach nie jest zdefiniowany opis

avg.today_income.unit

=> “EUR”[/code]

Zapraszam do komentowania i rozwijania :wink: