Class: Bodhi::Metric
- Inherits:
-
Object
show all
- Extended by:
- AggregateMetrics, CountMetrics
- Includes:
- Enumerable
- Defined in:
- lib/bodhi/metric.rb
Constant Summary
collapse
- @@metrics =
{}
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
aggregate, average, maximum, minimum, sum
Constructor Details
#initialize(params) ⇒ Metric
Returns a new instance of Metric.
38
39
40
41
42
|
# File 'lib/bodhi/metric.rb', line 38
def initialize (params)
@name = params[:name]
@model_name = params[:model_name]
@block = params[:block]
end
|
Instance Attribute Details
#block ⇒ Object
Returns the value of attribute block.
36
37
38
|
# File 'lib/bodhi/metric.rb', line 36
def block
@block
end
|
#model_name ⇒ Object
Returns the value of attribute model_name.
36
37
38
|
# File 'lib/bodhi/metric.rb', line 36
def model_name
@model_name
end
|
#name ⇒ Object
Returns the value of attribute name.
36
37
38
|
# File 'lib/bodhi/metric.rb', line 36
def name
@name
end
|
Class Method Details
.[](key) ⇒ Object
24
25
26
|
# File 'lib/bodhi/metric.rb', line 24
def self.[] (key)
@@metrics[key]
end
|
.all ⇒ Object
28
29
30
|
# File 'lib/bodhi/metric.rb', line 28
def self.all
@@metrics.each_value
end
|
.define(*args, &block) ⇒ Object
12
13
14
15
16
17
18
19
20
21
22
|
# File 'lib/bodhi/metric.rb', line 12
def self.define (*args, &block)
options = args.
options[:name] = args[0] if args[0].is_a? Symbol
options[:block] ||= block if block
m = Metric.new (options)
@@metrics[m.name] = m
m
end
|
.generate_all ⇒ Object
32
33
34
|
# File 'lib/bodhi/metric.rb', line 32
def self.generate_all
@@metrics.each_value { |m| m.generate }
end
|
Instance Method Details
#current ⇒ Object
44
45
46
|
# File 'lib/bodhi/metric.rb', line 44
def current
@block.call(get_run_opts.merge(:start => Time.now.beginning_of_day, :end => Time.now.end_of_day))
end
|
#for_period(start_date, end_date = Time.now) ⇒ Object
48
49
50
|
# File 'lib/bodhi/metric.rb', line 48
def for_period (start_date, end_date = Time.now)
MetricValue.where(:metric => @name).where("start between ? and ?", start_date, end_date)
end
|
#generate ⇒ Object
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
# File 'lib/bodhi/metric.rb', line 52
def generate
MetricValue.where(:metric => self.name).where("start >= ?", Date.today).destroy_all
last_run = MetricValue.maximum(:end, :conditions => ["metric = '#{self.name}'"]) || Date.yesterday
while last_run < Date.today
start_date = (last_run + 1.day).beginning_of_day
end_date = start_date + 1.day - 1.second
value = @block.call(get_run_opts.merge(:start => start_date, :end => end_date))
MetricValue.create!(:start => start_date, :end => end_date, :value => value, :metric => self.name)
last_run = start_date
end
end
|