god 0.7.3 → 0.7.5
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +11 -3
- data/Manifest.txt +2 -0
- data/README.txt +9 -1
- data/Rakefile +1 -1
- data/lib/god.rb +2 -3
- data/lib/god/configurable.rb +1 -0
- data/lib/god/logger.rb +2 -2
- data/lib/god/simple_logger.rb +53 -0
- data/test/configs/matias/matias.god +50 -0
- data/test/configs/stress/stress.god +2 -2
- metadata +5 -3
data/History.txt
CHANGED
@@ -1,10 +1,18 @@
|
|
1
|
+
== 0.7.5 / 2008-02-21
|
2
|
+
* Bug Fixes
|
3
|
+
* Remove Ruby's Logger and replace with custom SimpleLogger to stop threaded leak
|
4
|
+
|
5
|
+
== 0.7.4 / 2008-02-18
|
6
|
+
* Bug Fixes
|
7
|
+
* Introduce local scope to prevent faulty optimization that causes memory to leak
|
8
|
+
|
1
9
|
== 0.7.3 / 2008-02-14
|
2
10
|
* Minor Enhancements
|
3
11
|
* Add --bleakhouse to make running diagnostics easier
|
4
12
|
* Bug Fixes
|
5
|
-
* Use ::Process.kill(0, ...) instead of `kill -0`
|
6
|
-
* Fix pid_file behavior in process-centric conditions so they work with tasks
|
7
|
-
* Redirect output of daemonized god to log file or /dev/null earlier
|
13
|
+
* Use ::Process.kill(0, ...) instead of `kill -0` [queso]
|
14
|
+
* Fix pid_file behavior in process-centric conditions so they work with tasks [matias]
|
15
|
+
* Redirect output of daemonized god to log file or /dev/null earlier [_eric]
|
8
16
|
|
9
17
|
== 0.7.2 / 2008-02-04
|
10
18
|
* Bug Fixes
|
data/Manifest.txt
CHANGED
@@ -45,6 +45,7 @@ lib/god/logger.rb
|
|
45
45
|
lib/god/metric.rb
|
46
46
|
lib/god/process.rb
|
47
47
|
lib/god/registry.rb
|
48
|
+
lib/god/simple_logger.rb
|
48
49
|
lib/god/socket.rb
|
49
50
|
lib/god/sugar.rb
|
50
51
|
lib/god/system/process.rb
|
@@ -67,6 +68,7 @@ test/configs/daemon_polls/daemon_polls.god
|
|
67
68
|
test/configs/daemon_polls/simple_server.rb
|
68
69
|
test/configs/degrading_lambda/degrading_lambda.god
|
69
70
|
test/configs/degrading_lambda/tcp_server.rb
|
71
|
+
test/configs/matias/matias.god
|
70
72
|
test/configs/real.rb
|
71
73
|
test/configs/running_load/running_load.god
|
72
74
|
test/configs/stress/simple_server.rb
|
data/README.txt
CHANGED
@@ -24,12 +24,20 @@ Sign up for the god mailing list at http://groups.google.com/group/god-rb
|
|
24
24
|
== INSTALL:
|
25
25
|
|
26
26
|
$ sudo gem install god
|
27
|
+
|
28
|
+
== CONTRIBUTE:
|
29
|
+
|
30
|
+
Latest code is available at http://github.com/mojombo/god
|
31
|
+
|
32
|
+
The 'master' branch can be cloned with:
|
33
|
+
|
34
|
+
$ git clone git://github.com/mojombo/god.git
|
27
35
|
|
28
36
|
== LICENSE:
|
29
37
|
|
30
38
|
(The MIT License)
|
31
39
|
|
32
|
-
Copyright (c) 2007
|
40
|
+
Copyright (c) 2007 Tom Preston-Werner
|
33
41
|
|
34
42
|
Permission is hereby granted, free of charge, to any person obtaining
|
35
43
|
a copy of this software and associated documentation files (the
|
data/Rakefile
CHANGED
data/lib/god.rb
CHANGED
@@ -5,7 +5,6 @@ require 'rubygems'
|
|
5
5
|
|
6
6
|
# core
|
7
7
|
require 'stringio'
|
8
|
-
require 'logger'
|
9
8
|
require 'fileutils'
|
10
9
|
|
11
10
|
begin
|
@@ -19,6 +18,7 @@ end
|
|
19
18
|
|
20
19
|
# internal requires
|
21
20
|
require 'god/errors'
|
21
|
+
require 'god/simple_logger'
|
22
22
|
require 'god/logger'
|
23
23
|
require 'god/system/process'
|
24
24
|
require 'god/dependency_graph'
|
@@ -70,7 +70,6 @@ $:.unshift File.join(File.dirname(__FILE__), *%w[.. ext god])
|
|
70
70
|
|
71
71
|
# App wide logging system
|
72
72
|
LOG = God::Logger.new
|
73
|
-
LOG.datetime_format = "%Y-%m-%d %H:%M:%S "
|
74
73
|
|
75
74
|
def applog(watch, level, text)
|
76
75
|
LOG.log(watch, level, text)
|
@@ -130,7 +129,7 @@ class Module
|
|
130
129
|
end
|
131
130
|
|
132
131
|
module God
|
133
|
-
VERSION = '0.7.
|
132
|
+
VERSION = '0.7.5'
|
134
133
|
|
135
134
|
LOG_BUFFER_SIZE_DEFAULT = 100
|
136
135
|
PID_FILE_DIRECTORY_DEFAULTS = ['/var/run/god', '~/.god/pids']
|
data/lib/god/configurable.rb
CHANGED
data/lib/god/logger.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module God
|
2
2
|
|
3
|
-
class Logger <
|
3
|
+
class Logger < SimpleLogger
|
4
4
|
SYSLOG_EQUIVALENTS = {:fatal => :crit,
|
5
5
|
:error => :err,
|
6
6
|
:warn => :debug,
|
@@ -22,7 +22,7 @@ module God
|
|
22
22
|
@mutex = Mutex.new
|
23
23
|
@capture = nil
|
24
24
|
@templogio = StringIO.new
|
25
|
-
@templog =
|
25
|
+
@templog = SimpleLogger.new(@templogio)
|
26
26
|
@templog.level = Logger::INFO
|
27
27
|
load_syslog
|
28
28
|
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module God
|
2
|
+
|
3
|
+
class SimpleLogger
|
4
|
+
DEBUG = 2
|
5
|
+
INFO = 4
|
6
|
+
WARN = 8
|
7
|
+
ERROR = 16
|
8
|
+
FATAL = 32
|
9
|
+
|
10
|
+
SEV_LABEL = {DEBUG => 'DEBUG',
|
11
|
+
INFO => 'INFO',
|
12
|
+
WARN => 'WARN',
|
13
|
+
ERROR => 'ERROR',
|
14
|
+
FATAL => 'FATAL'}
|
15
|
+
|
16
|
+
attr_accessor :datetime_format, :level
|
17
|
+
|
18
|
+
def initialize(io)
|
19
|
+
@io = io
|
20
|
+
@level = INFO
|
21
|
+
@datetime_format = "%Y-%m-%d %H:%M:%S"
|
22
|
+
end
|
23
|
+
|
24
|
+
def output(level, msg)
|
25
|
+
return if level < self.level
|
26
|
+
|
27
|
+
time = Time.now.strftime(self.datetime_format)
|
28
|
+
label = SEV_LABEL[level]
|
29
|
+
@io.print("#{label[0..0]} [#{time}] #{label.rjust(5)}: #{msg}\n")
|
30
|
+
end
|
31
|
+
|
32
|
+
def fatal(msg)
|
33
|
+
self.output(FATAL, msg)
|
34
|
+
end
|
35
|
+
|
36
|
+
def error(msg)
|
37
|
+
self.output(ERROR, msg)
|
38
|
+
end
|
39
|
+
|
40
|
+
def warn(msg)
|
41
|
+
self.output(WARN, msg)
|
42
|
+
end
|
43
|
+
|
44
|
+
def info(msg)
|
45
|
+
self.output(INFO, msg)
|
46
|
+
end
|
47
|
+
|
48
|
+
def debug(msg)
|
49
|
+
self.output(DEBUG, msg)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
$pid_file = "/tmp/matias.pid"
|
2
|
+
|
3
|
+
God.task do |w|
|
4
|
+
w.name = "watcher"
|
5
|
+
w.interval = 5.seconds
|
6
|
+
w.valid_states = [:init, :up, :down]
|
7
|
+
w.initial_state = :init
|
8
|
+
|
9
|
+
# determine the state on startup
|
10
|
+
w.transition(:init, { true => :up, false => :down }) do |on|
|
11
|
+
on.condition(:process_running) do |c|
|
12
|
+
c.running = true
|
13
|
+
c.pid_file = $pid_file
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
# when process is up
|
18
|
+
w.transition(:up, :down) do |on|
|
19
|
+
# transition to 'start' if process goes down
|
20
|
+
on.condition(:process_running) do |c|
|
21
|
+
c.running = false
|
22
|
+
c.pid_file = $pid_file
|
23
|
+
end
|
24
|
+
|
25
|
+
# send up info
|
26
|
+
on.condition(:lambda) do |c|
|
27
|
+
c.lambda = lambda do
|
28
|
+
puts 'yay I am up'
|
29
|
+
false
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
# when process is down
|
35
|
+
w.transition(:down, :up) do |on|
|
36
|
+
# transition to 'up' if process comes up
|
37
|
+
on.condition(:process_running) do |c|
|
38
|
+
c.running = true
|
39
|
+
c.pid_file = $pid_file
|
40
|
+
end
|
41
|
+
|
42
|
+
# send down info
|
43
|
+
on.condition(:lambda) do |c|
|
44
|
+
c.lambda = lambda do
|
45
|
+
puts 'boo I am down'
|
46
|
+
false
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
metadata
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.
|
2
|
+
rubygems_version: 0.9.2
|
3
3
|
specification_version: 1
|
4
4
|
name: god
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.7.
|
7
|
-
date: 2008-
|
6
|
+
version: 0.7.5
|
7
|
+
date: 2008-05-13 00:00:00 -07:00
|
8
8
|
summary: Like monit, only awesome
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -77,6 +77,7 @@ files:
|
|
77
77
|
- lib/god/metric.rb
|
78
78
|
- lib/god/process.rb
|
79
79
|
- lib/god/registry.rb
|
80
|
+
- lib/god/simple_logger.rb
|
80
81
|
- lib/god/socket.rb
|
81
82
|
- lib/god/sugar.rb
|
82
83
|
- lib/god/system/process.rb
|
@@ -99,6 +100,7 @@ files:
|
|
99
100
|
- test/configs/daemon_polls/simple_server.rb
|
100
101
|
- test/configs/degrading_lambda/degrading_lambda.god
|
101
102
|
- test/configs/degrading_lambda/tcp_server.rb
|
103
|
+
- test/configs/matias/matias.god
|
102
104
|
- test/configs/real.rb
|
103
105
|
- test/configs/running_load/running_load.god
|
104
106
|
- test/configs/stress/simple_server.rb
|