Add default pid_directory as /var/run/god
[god.git] / lib / god.rb
blobd4e6df5d055703d4ab1573d0614ac39c24952770
1 $:.unshift File.dirname(__FILE__)     # For use/testing when no gem is installed
3 require 'syslog'
5 # internal requires
6 require 'god/base'
7 require 'god/errors'
9 require 'god/system/process'
11 require 'god/behavior'
12 require 'god/behaviors/clean_pid_file'
14 require 'god/condition'
15 require 'god/conditions/timeline'
16 require 'god/conditions/process_running'
17 require 'god/conditions/process_exits'
18 require 'god/conditions/memory_usage'
19 require 'god/conditions/cpu_usage'
20 require 'god/conditions/always'
22 require 'god/reporter'
23 require 'god/server'
24 require 'god/timer'
25 require 'god/hub'
27 require 'god/metric'
29 require 'god/watch'
30 require 'god/meddle'
32 require 'god/event_handler'
33 require 'god/registry'
34 require 'god/process'
36 $:.unshift File.join(File.dirname(__FILE__), *%w[.. ext god])
38 begin
39   Syslog.open('god')
40 rescue RuntimeError
41   Syslog.reopen('god')
42 end
44 God::EventHandler.load
46 module God
47   VERSION = '0.3.0'
48   
49   # Where pid files created by god will go by default
50   def self.pid_file_directory
51     @pid_file_directory ||= '/var/run/god'
52   end
53   
54   def self.pid_file_directory=(value)
55     @pid_file_directory = value
56   end
57   
58   def self.meddle(options = {})  
59     m = Meddle.new(options)
60     
61     # yeild to the config file
62     yield m
63     
64     # start event handler system
65     EventHandler.start if EventHandler.loaded?
66     
67     # start the timer system
68     Timer.get
70     # start monitoring
71     m.monitor
72     
73     # join the timer thread so we don't exit
74     Timer.get.join
75   end  
76 end