sponges 0.1.3 → 0.2.0
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 +8 -1
- data/lib/sponges.rb +0 -1
- data/lib/sponges/cli.rb +4 -1
- data/lib/sponges/configuration.rb +25 -1
- data/lib/sponges/supervisor.rb +2 -0
- data/lib/sponges/version.rb +1 -1
- metadata +2 -2
data/README.md
CHANGED
@@ -63,12 +63,19 @@ end
|
|
63
63
|
Sponges.configure do |config|
|
64
64
|
config.logger = MyCustomLogger.new # optionnal
|
65
65
|
config.redis = Redis.new # optionnal
|
66
|
+
config.size = 3
|
67
|
+
config.daemonize = true
|
68
|
+
config.after_fork do
|
69
|
+
puts "Execute some when a child process is created"
|
70
|
+
end
|
71
|
+
config.on_chld do
|
72
|
+
puts "Execute code when a child process is killed"
|
66
73
|
end
|
67
74
|
|
68
75
|
# Register a pool named "worker_name".
|
69
76
|
# Options are optionnal. Consider it as a default, options given by command have
|
70
77
|
# the precedence.
|
71
|
-
Sponges.start "worker_name"
|
78
|
+
Sponges.start "worker_name" do
|
72
79
|
Worker.new({some: args}).run
|
73
80
|
end
|
74
81
|
```
|
data/lib/sponges.rb
CHANGED
@@ -21,7 +21,6 @@ module Sponges
|
|
21
21
|
def start(worker_name, options = {}, argv = ARGV, &block)
|
22
22
|
Sponges::Configuration.worker_name = worker_name
|
23
23
|
Sponges::Configuration.worker = block
|
24
|
-
Sponges::Configuration.options = options
|
25
24
|
Sponges::Cli.start(argv)
|
26
25
|
end
|
27
26
|
module_function :start
|
data/lib/sponges/cli.rb
CHANGED
@@ -7,7 +7,10 @@ module Sponges
|
|
7
7
|
option :size, type: :numeric
|
8
8
|
desc "Start workers"
|
9
9
|
def start(options = {})
|
10
|
-
options =
|
10
|
+
options = {
|
11
|
+
size: Sponges::Configuration.size,
|
12
|
+
daemonize: Sponges::Configuration.daemonize
|
13
|
+
}.reject{|k, v| v.nil?}.merge(options)
|
11
14
|
Sponges::Runner.new(Sponges::Configuration.worker_name, options,
|
12
15
|
Sponges::Configuration.worker
|
13
16
|
).start
|
@@ -4,7 +4,9 @@ module Sponges
|
|
4
4
|
#
|
5
5
|
class Configuration
|
6
6
|
class << self
|
7
|
-
ACCESSOR = [:worker_name, :worker, :logger, :redis, :
|
7
|
+
ACCESSOR = [:worker_name, :worker, :logger, :redis, :size,
|
8
|
+
:daemonize, :after_fork
|
9
|
+
]
|
8
10
|
attr_accessor *ACCESSOR
|
9
11
|
|
10
12
|
def configure
|
@@ -17,6 +19,28 @@ module Sponges
|
|
17
19
|
conf
|
18
20
|
end
|
19
21
|
end
|
22
|
+
|
23
|
+
def after_fork(&block)
|
24
|
+
Hook._after_fork = block
|
25
|
+
end
|
26
|
+
|
27
|
+
def on_chld(&block)
|
28
|
+
Hook._on_chld = block
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
class Hook
|
34
|
+
class << self
|
35
|
+
attr_accessor :_after_fork, :_on_chld
|
36
|
+
|
37
|
+
def after_fork
|
38
|
+
_after_fork.call if _after_fork.respond_to?(:call)
|
39
|
+
end
|
40
|
+
|
41
|
+
def on_chld
|
42
|
+
_on_chld.call if _on_chld.respond_to?(:call)
|
43
|
+
end
|
20
44
|
end
|
21
45
|
end
|
22
46
|
end
|
data/lib/sponges/supervisor.rb
CHANGED
@@ -36,6 +36,7 @@ module Sponges
|
|
36
36
|
name = children_name
|
37
37
|
pid = fork do
|
38
38
|
$PROGRAM_NAME = name
|
39
|
+
Sponges::Hook.after_fork
|
39
40
|
@block.call
|
40
41
|
end
|
41
42
|
Sponges.logger.info "Supervisor create a child with #{pid} pid."
|
@@ -71,6 +72,7 @@ module Sponges
|
|
71
72
|
if dead
|
72
73
|
Sponges.logger.warn "Child #{dead} died. Restarting a new one..."
|
73
74
|
@pids.srem dead
|
75
|
+
Sponges::Hook.on_chld
|
74
76
|
fork_children
|
75
77
|
end
|
76
78
|
rescue Errno::ECHILD => e
|
data/lib/sponges/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sponges
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-11-
|
12
|
+
date: 2012-11-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: boson
|