class Totalizer::Metric
Attributes
date[RW]
duration[RW]
filter[RW]
ids[RW]
map[RW]
model[RW]
value[RW]
Public Class Methods
new(params)
click to toggle source
# File lib/totalizer/metric.rb, line 5 def initialize params self.model = params[:model] self.date = params[:date] || DateTime.now.change(hour: 0) self.duration = params[:duration] || 7 self.filter = params[:filter] self.map = params[:map] || 'id' validate_attributes! end
Public Instance Methods
attributes()
click to toggle source
# File lib/totalizer/metric.rb, line 14 def attributes { model: model, date: date, duration: duration, filter: filter, map: map } end
end_date()
click to toggle source
# File lib/totalizer/metric.rb, line 18 def end_date date end
finish()
click to toggle source
# File lib/totalizer/metric.rb, line 46 def finish finish_ids.size end
finish_ids()
click to toggle source
# File lib/totalizer/metric.rb, line 42 def finish_ids @finish_ids ||= calculate(["created_at < ?", end_date]) end
rate()
click to toggle source
# File lib/totalizer/metric.rb, line 50 def rate start == 0 ? 0 : (finish - start).to_f / start.to_f end
start()
click to toggle source
# File lib/totalizer/metric.rb, line 38 def start start_ids.size end
start_date()
click to toggle source
# File lib/totalizer/metric.rb, line 22 def start_date date - duration.days end
start_ids()
click to toggle source
# File lib/totalizer/metric.rb, line 34 def start_ids @start_ids ||= calculate(["created_at < ?", start_date]) end
Private Instance Methods
calculate(where)
click to toggle source
# File lib/totalizer/metric.rb, line 56 def calculate where model.where(filter).where(where).map{ |object| object.send(map) }.uniq end
validate_attributes!()
click to toggle source
# File lib/totalizer/metric.rb, line 60 def validate_attributes! raise Errors::InvalidModel if model.nil? raise Errors::InvalidDate unless date.kind_of?(DateTime) raise Errors::InvalidDuration unless duration.kind_of?(Integer) end