Method: God::Metric#condition

Defined in:
lib/god/metric.rb

#condition(kind) {|c| ... } ⇒ Object

Instantiate a Condition of type kind and pass it into the optional block. Attributes of the condition must be set in the config file

Yields:

  • (c)


14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/god/metric.rb', line 14

def condition(kind)
  # create the condition
  begin
    c = Condition.generate(kind, self.watch)
  rescue NoSuchConditionError => e
    abort e.message
  end
  
  # send to block so config can set attributes
  yield(c) if block_given?
  
  # call prepare on the condition
  c.prepare
  
  # test generic and specific validity
  unless Condition.valid?(c) && c.valid?
    abort "Exiting on invalid condition"
  end
  
  # inherit interval from watch if no poll condition specific interval was set
  if c.kind_of?(PollCondition) && !c.interval
    if self.watch.interval
      c.interval = self.watch.interval
    else
      abort "No interval set for Condition '#{c.class.name}' in Watch '#{self.watch.name}', and no default Watch interval from which to inherit"
    end
  end
  
  # remember
  self.conditions << c
end