daemonizer 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION +1 -1
- data/daemonizer.gemspec +2 -2
- data/lib/daemonizer.rb +37 -1
- data/lib/daemonizer/cli.rb +20 -28
- data/lib/daemonizer/config.rb +8 -14
- data/lib/daemonizer/engine.rb +7 -4
- metadata +4 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.4
|
data/daemonizer.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{daemonizer}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.4"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Gleb Pomykalov"]
|
12
|
-
s.date = %q{2010-07-
|
12
|
+
s.date = %q{2010-07-13}
|
13
13
|
s.default_executable = %q{daemonizer}
|
14
14
|
s.description = %q{Inspired by bundler and rack. Mostly built on top of Alexey Kovyrin's loops code. http://github.com/kovyrin/loops}
|
15
15
|
s.email = %q{glebpom@gmail.com}
|
data/lib/daemonizer.rb
CHANGED
@@ -13,9 +13,45 @@ module Daemonizer
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def self.root
|
16
|
-
@@root
|
16
|
+
if defined?(@@root)
|
17
|
+
@@root
|
18
|
+
else
|
19
|
+
File.dirname(demfile)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.demfile=(demfile_name)
|
24
|
+
@@demfile = File.expand_path(demfile_name)
|
25
|
+
@@demfile
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.demfile
|
29
|
+
if defined?(@@demfile)
|
30
|
+
@@demfile
|
31
|
+
else
|
32
|
+
"Demfile"
|
33
|
+
end
|
17
34
|
end
|
18
35
|
|
36
|
+
def self.[](pool)
|
37
|
+
find_pools(pool).first or nil
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.find_pools(pool_name = nil)
|
41
|
+
pools = Dsl.evaluate(demfile)
|
42
|
+
|
43
|
+
if pool_name
|
44
|
+
if pool = pools[pool_name.to_sym]
|
45
|
+
[pool]
|
46
|
+
else
|
47
|
+
puts "#{pool_name} is not configured"
|
48
|
+
[]
|
49
|
+
end
|
50
|
+
else
|
51
|
+
pools.values
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
19
55
|
end
|
20
56
|
|
21
57
|
require File.dirname(__FILE__) + '/../lib/daemonizer/autoload'
|
data/lib/daemonizer/cli.rb
CHANGED
@@ -5,14 +5,16 @@ module Daemonizer
|
|
5
5
|
class CLI < Thor
|
6
6
|
check_unknown_options!
|
7
7
|
|
8
|
+
method_option :demfile, :type => :string, :aliases => "-D", :banner => "Path to Demfile"
|
9
|
+
|
8
10
|
def initialize(*)
|
9
11
|
super
|
12
|
+
Daemonizer.demfile = options[:demfile] || "Demfile"
|
10
13
|
end
|
11
14
|
|
12
15
|
desc "start", "Start pool"
|
13
|
-
method_option :demfile, :type => :string, :aliases => "-D", :banner => "Path to Demfile"
|
14
16
|
def start(pool_name = nil)
|
15
|
-
control_pools_loop(pool_name, "successfully started"
|
17
|
+
control_pools_loop(pool_name, "successfully started") do |pool|
|
16
18
|
# Pid file check
|
17
19
|
if Daemonize.check_pid(pool.pid_file)
|
18
20
|
print_pool pool.name, "Can't start, another process exists!"
|
@@ -41,9 +43,8 @@ module Daemonizer
|
|
41
43
|
end
|
42
44
|
|
43
45
|
desc "stop", "Stop pool"
|
44
|
-
method_option :demfile, :type => :string, :aliases => "-D", :banner => "Path to Demfile"
|
45
46
|
def stop(pool_name = nil)
|
46
|
-
control_pools_loop(pool_name, "successfully stoped"
|
47
|
+
control_pools_loop(pool_name, "successfully stoped") do |pool|
|
47
48
|
STDOUT.sync = true
|
48
49
|
unless Daemonize.check_pid(pool.pid_file)
|
49
50
|
print_pool pool.name, "No pid file or a stale pid file!"
|
@@ -65,18 +66,28 @@ module Daemonizer
|
|
65
66
|
return true
|
66
67
|
end
|
67
68
|
|
69
|
+
desc "list", "List of pools"
|
70
|
+
def list
|
71
|
+
puts "List of configured pools:"
|
72
|
+
puts ""
|
73
|
+
Daemonizer.find_pools(nil).each do |pool|
|
74
|
+
puts " * #{pool.name}"
|
75
|
+
end
|
76
|
+
puts ""
|
77
|
+
return true
|
78
|
+
end
|
79
|
+
|
80
|
+
|
68
81
|
desc "restart", "Restart pool"
|
69
|
-
method_option :demfile, :type => :string, :aliases => "-D", :banner => "Path to Demfile"
|
70
82
|
def restart(pool_name = nil)
|
71
83
|
invoke :stop, pool_name
|
72
84
|
invoke :start, pool_name
|
73
85
|
end
|
74
86
|
|
75
87
|
desc "debug", "Debug pool (do not demonize)"
|
76
|
-
method_option :demfile, :type => :string, :aliases => "-D", :banner => "Path to Demfile"
|
77
88
|
def debug(pool_name = nil)
|
78
89
|
puts "You should supply pool_name to debug" if pool_name.nil?
|
79
|
-
control_pools_loop(pool_name, "execution ended"
|
90
|
+
control_pools_loop(pool_name, "execution ended") do |pool|
|
80
91
|
STDOUT.sync = true
|
81
92
|
print_pool pool.name, "Debugging pool: "
|
82
93
|
|
@@ -90,8 +101,8 @@ module Daemonizer
|
|
90
101
|
end
|
91
102
|
|
92
103
|
private
|
93
|
-
def control_pools_loop(pool_name, message = nil,
|
94
|
-
find_pools(pool_name
|
104
|
+
def control_pools_loop(pool_name, message = nil, &block)
|
105
|
+
Daemonizer.find_pools(pool_name).each do |pool|
|
95
106
|
Process.fork do
|
96
107
|
yield(pool)
|
97
108
|
end
|
@@ -102,25 +113,6 @@ module Daemonizer
|
|
102
113
|
end
|
103
114
|
end
|
104
115
|
|
105
|
-
def find_pools(pool_name, demfile)
|
106
|
-
demfile_name = demfile || "Demfile"
|
107
|
-
|
108
|
-
Daemonizer.root = File.dirname(File.expand_path(demfile_name))
|
109
|
-
|
110
|
-
pools = Dsl.evaluate(demfile_name)
|
111
|
-
|
112
|
-
if pool_name
|
113
|
-
if pool = pools[pool_name.to_sym]
|
114
|
-
[pool]
|
115
|
-
else
|
116
|
-
print_pool pool_name, "pool is not configured"
|
117
|
-
[]
|
118
|
-
end
|
119
|
-
else
|
120
|
-
pools.values
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
116
|
def print_pool(pool_name, message)
|
125
117
|
puts "#{pool_name}: #{message}"
|
126
118
|
end
|
data/lib/daemonizer/config.rb
CHANGED
@@ -8,10 +8,17 @@ module Daemonizer
|
|
8
8
|
@pool = pool
|
9
9
|
@options = options
|
10
10
|
init_defaults
|
11
|
-
init_logger
|
12
11
|
validate
|
13
12
|
initialize_handler
|
14
13
|
end
|
14
|
+
|
15
|
+
def option(key)
|
16
|
+
if handler
|
17
|
+
handler.option(key)
|
18
|
+
else
|
19
|
+
raise ConfigError, "handler is not initialized"
|
20
|
+
end
|
21
|
+
end
|
15
22
|
|
16
23
|
def initialize_handler
|
17
24
|
if @options[:after_init]
|
@@ -23,15 +30,6 @@ module Daemonizer
|
|
23
30
|
@handler.logger = @logger
|
24
31
|
end
|
25
32
|
|
26
|
-
def init_logger
|
27
|
-
@logger = Logger.new @pool.to_s
|
28
|
-
outputter = FileOutputter.new('log', :filename => self.log_file)
|
29
|
-
outputter.formatter = PatternFormatter.new :pattern => "%d - %l %g - %m"
|
30
|
-
@logger.outputters = outputter
|
31
|
-
@logger.level = INFO
|
32
|
-
GDC.set "#{Process.pid}/monitor"
|
33
|
-
end
|
34
|
-
|
35
33
|
def init_defaults
|
36
34
|
@options[:before_init] ||= nil
|
37
35
|
@options[:after_init] ||= nil
|
@@ -78,10 +76,6 @@ module Daemonizer
|
|
78
76
|
def name
|
79
77
|
@pool
|
80
78
|
end
|
81
|
-
|
82
|
-
def logger
|
83
|
-
@logger
|
84
|
-
end
|
85
79
|
end
|
86
80
|
|
87
81
|
end
|
data/lib/daemonizer/engine.rb
CHANGED
@@ -1,13 +1,16 @@
|
|
1
1
|
module Daemonizer
|
2
2
|
class Engine
|
3
3
|
attr_reader :config
|
4
|
+
attr_reader :logger
|
4
5
|
|
5
6
|
def initialize(config, debug = false)
|
6
7
|
@config = config
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
@
|
8
|
+
@logger = Logger.new @config.name.to_s
|
9
|
+
outputter = FileOutputter.new('log', :filename => self.log_file)
|
10
|
+
outputter.formatter = PatternFormatter.new :pattern => "%d - %l %g - %m"
|
11
|
+
@logger.outputters = outputter
|
12
|
+
@logger.level = INFO
|
13
|
+
GDC.set "#{Process.pid}/monitor"
|
11
14
|
end
|
12
15
|
|
13
16
|
def start!
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: daemonizer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 4
|
10
|
+
version: 0.1.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Gleb Pomykalov
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-07-
|
18
|
+
date: 2010-07-13 00:00:00 +04:00
|
19
19
|
default_executable: daemonizer
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|