daemonizer 0.1.0 → 0.1.1
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/README.md +11 -2
- data/VERSION +1 -1
- data/daemonizer.gemspec +3 -2
- data/lib/daemonizer/autoload.rb +1 -0
- data/lib/daemonizer/config.rb +6 -6
- data/lib/daemonizer/dsl.rb +8 -2
- data/lib/daemonizer/handler.rb +3 -3
- data/lib/daemonizer/option.rb +27 -0
- metadata +5 -4
data/README.md
CHANGED
@@ -84,8 +84,17 @@ Usage
|
|
84
84
|
log_file "log/daemonizer.log" #relative to Demfile
|
85
85
|
|
86
86
|
handler ::MyBackgroundSolution::DaemonizerHandler
|
87
|
-
|
88
|
-
|
87
|
+
|
88
|
+
#automatically-parsed option by daemonizer
|
89
|
+
set_option :queue do |worker_id, worker_count|
|
90
|
+
"queue_#{worker_id}"
|
91
|
+
end
|
92
|
+
|
93
|
+
#simple string option
|
94
|
+
set_option :author, "Gleb Pomykalov"
|
95
|
+
|
96
|
+
#lambda-option (transparent for daemonizer, fully processed by handler)
|
97
|
+
set_option :on_error, lambda { |object| object.logger.fatal "epic fail"}
|
89
98
|
end
|
90
99
|
|
91
100
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.1
|
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.1"
|
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-12}
|
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}
|
@@ -35,6 +35,7 @@ Gem::Specification.new do |s|
|
|
35
35
|
"lib/daemonizer/engine.rb",
|
36
36
|
"lib/daemonizer/errors.rb",
|
37
37
|
"lib/daemonizer/handler.rb",
|
38
|
+
"lib/daemonizer/option.rb",
|
38
39
|
"lib/daemonizer/process_manager.rb",
|
39
40
|
"lib/daemonizer/worker.rb",
|
40
41
|
"lib/daemonizer/worker_pool.rb"
|
data/lib/daemonizer/autoload.rb
CHANGED
data/lib/daemonizer/config.rb
CHANGED
@@ -12,7 +12,7 @@ module Daemonizer
|
|
12
12
|
validate
|
13
13
|
initialize_handler
|
14
14
|
end
|
15
|
-
|
15
|
+
|
16
16
|
def initialize_handler
|
17
17
|
if @options[:after_init]
|
18
18
|
@handler = FakeHandler.new(@options[:before_init], @options[:after_init], @options)
|
@@ -22,7 +22,7 @@ module Daemonizer
|
|
22
22
|
end
|
23
23
|
@handler.logger = @logger
|
24
24
|
end
|
25
|
-
|
25
|
+
|
26
26
|
def init_logger
|
27
27
|
@logger = Logger.new @pool.to_s
|
28
28
|
outputter = FileOutputter.new('log', :filename => self.log_file)
|
@@ -31,7 +31,7 @@ module Daemonizer
|
|
31
31
|
@logger.level = INFO
|
32
32
|
GDC.set "#{Process.pid}/monitor"
|
33
33
|
end
|
34
|
-
|
34
|
+
|
35
35
|
def init_defaults
|
36
36
|
@options[:before_init] ||= nil
|
37
37
|
@options[:after_init] ||= nil
|
@@ -43,7 +43,7 @@ module Daemonizer
|
|
43
43
|
@options[:handler] ||= nil
|
44
44
|
@options[:handler_options] ||= {}
|
45
45
|
end
|
46
|
-
|
46
|
+
|
47
47
|
def validate
|
48
48
|
raise ConfigError, "Workers count should be more then zero" if @options[:workers] < 1
|
49
49
|
raise ConfigError, "Engine #{@options[:engine]} is not known" unless [:fork, :thread].include?(@options[:engine])
|
@@ -61,13 +61,13 @@ module Daemonizer
|
|
61
61
|
raise ConfigError, "after_init should have block" unless @options[:after_init].is_a?(Proc)
|
62
62
|
end
|
63
63
|
end
|
64
|
-
|
64
|
+
|
65
65
|
[:engine, :workers, :poll_period, :root].each do |method|
|
66
66
|
define_method method do
|
67
67
|
@options[method.to_sym]
|
68
68
|
end
|
69
69
|
end
|
70
|
-
|
70
|
+
|
71
71
|
[:log_file, :pid_file].each do |method|
|
72
72
|
define_method method do
|
73
73
|
File.join(Daemonizer.root, @options[method.to_sym])
|
data/lib/daemonizer/dsl.rb
CHANGED
@@ -15,9 +15,15 @@ module Daemonizer
|
|
15
15
|
@configs = {}
|
16
16
|
end
|
17
17
|
|
18
|
-
def set_option(option, value)
|
18
|
+
def set_option(option, value = nil, &block)
|
19
19
|
@options[:handler_options] ||= {}
|
20
|
-
|
20
|
+
if value
|
21
|
+
@options[:handler_options][option.to_sym] = Option.new(option, value)
|
22
|
+
elsif block_given?
|
23
|
+
@options[:handler_options][option.to_sym] = Option.new(option, block, true)
|
24
|
+
else
|
25
|
+
raise DslError, "you should supply block or value to :set_option"
|
26
|
+
end
|
21
27
|
end
|
22
28
|
|
23
29
|
def handler(handler)
|
data/lib/daemonizer/handler.rb
CHANGED
@@ -13,10 +13,10 @@ module Daemonizer
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def option(key)
|
16
|
-
if option = @options[key.to_sym]
|
17
|
-
option.
|
16
|
+
if option = @options[key.to_sym]
|
17
|
+
option.value(self)
|
18
18
|
else
|
19
|
-
|
19
|
+
nil
|
20
20
|
end
|
21
21
|
end
|
22
22
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Daemonizer
|
2
|
+
class Option
|
3
|
+
class OptionError < StandardError; end
|
4
|
+
|
5
|
+
def initialize(option, value, auto_eval = false)
|
6
|
+
@option = option
|
7
|
+
@value = value
|
8
|
+
@auto_eval = auto_eval
|
9
|
+
if @auto_eval && !@value.is_a?(Proc)
|
10
|
+
raise OptionError, "auto_apply can be used only with callable option"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def value(handler = nil)
|
15
|
+
if @auto_eval && @value.is_a?(Proc)
|
16
|
+
if handler && handler.worker_id && handler.workers_count
|
17
|
+
return @value.call(handler.worker_id, handler.workers_count)
|
18
|
+
else
|
19
|
+
raise OptionError, "value called before handler initialized"
|
20
|
+
end
|
21
|
+
else
|
22
|
+
@value
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
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: 25
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 1
|
10
|
+
version: 0.1.1
|
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-12 00:00:00 +04:00
|
19
19
|
default_executable: daemonizer
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -76,6 +76,7 @@ files:
|
|
76
76
|
- lib/daemonizer/engine.rb
|
77
77
|
- lib/daemonizer/errors.rb
|
78
78
|
- lib/daemonizer/handler.rb
|
79
|
+
- lib/daemonizer/option.rb
|
79
80
|
- lib/daemonizer/process_manager.rb
|
80
81
|
- lib/daemonizer/worker.rb
|
81
82
|
- lib/daemonizer/worker_pool.rb
|