daemonizer 0.0.2 → 0.0.3

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/Rakefile CHANGED
@@ -11,6 +11,7 @@ begin
11
11
  gemspec.homepage = "http://github.com/glebpom/daemonizer"
12
12
  gemspec.authors = ["Gleb Pomykalov"]
13
13
  gemspec.add_dependency('log4r', '>= 1.1.8')
14
+ gemspec.add_dependency('thor', '>= 0.13.7')
14
15
  end
15
16
  Jeweler::GemcutterTasks.new
16
17
  rescue LoadError
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.0.3
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{daemonizer}
8
- s.version = "0.0.2"
8
+ s.version = "0.0.3"
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"]
@@ -47,11 +47,14 @@ Gem::Specification.new do |s|
47
47
 
48
48
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
49
49
  s.add_runtime_dependency(%q<log4r>, [">= 1.1.8"])
50
+ s.add_runtime_dependency(%q<thor>, [">= 0.13.7"])
50
51
  else
51
52
  s.add_dependency(%q<log4r>, [">= 1.1.8"])
53
+ s.add_dependency(%q<thor>, [">= 0.13.7"])
52
54
  end
53
55
  else
54
56
  s.add_dependency(%q<log4r>, [">= 1.1.8"])
57
+ s.add_dependency(%q<thor>, [">= 0.13.7"])
55
58
  end
56
59
  end
57
60
 
@@ -14,12 +14,20 @@ module Daemonizer
14
14
  @pm = ProcessManager.new(@config)
15
15
 
16
16
  init_block = Proc.new do
17
- @pm.start_workers do |process_id|
18
- @config.after_init.call(logger, process_id, @config.workers)
17
+ begin
18
+ @pm.start_workers do |process_id|
19
+ @config.after_init.call(logger, process_id, @config.workers)
20
+ end
21
+ rescue Exception => e
22
+ logger.fatal get_exception(e)
19
23
  end
20
24
  end
21
25
 
22
- @config.before_init.call(@config.logger, init_block)
26
+ begin
27
+ @config.before_init.call(@config.logger, init_block)
28
+ rescue Exception => e
29
+ logger.fatal get_exception(e)
30
+ end
23
31
  # Start monitoring loop
24
32
 
25
33
  setup_signals
@@ -25,6 +25,13 @@ module Daemonizer
25
25
  return if shutdown?
26
26
  if @engine == 'fork'
27
27
  @pid = Kernel.fork do
28
+ Dir.chdir '/'
29
+ File.umask 0000
30
+
31
+ STDIN.reopen '/dev/null'
32
+ STDOUT.reopen '/dev/null', 'a'
33
+ STDERR.reopen STDOUT
34
+
28
35
  @pid = Process.pid
29
36
  GDC.set "#{@pid}/#{@worker_id}"
30
37
  normal_exit = false
@@ -49,7 +56,7 @@ module Daemonizer
49
56
  end
50
57
  elsif @engine == 'thread'
51
58
  @thread = Thread.start do
52
- @worker_block.call
59
+ @worker_block.call(@worker_id)
53
60
  end
54
61
  else
55
62
  raise ArgumentError, "Invalid engine name: #{@engine}"
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: 27
4
+ hash: 25
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 2
10
- version: 0.0.2
9
+ - 3
10
+ version: 0.0.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Gleb Pomykalov
@@ -34,6 +34,22 @@ dependencies:
34
34
  version: 1.1.8
35
35
  type: :runtime
36
36
  version_requirements: *id001
37
+ - !ruby/object:Gem::Dependency
38
+ name: thor
39
+ prerelease: false
40
+ requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ hash: 37
46
+ segments:
47
+ - 0
48
+ - 13
49
+ - 7
50
+ version: 0.13.7
51
+ type: :runtime
52
+ version_requirements: *id002
37
53
  description: Inspired by bundler and rack. Mostly built on top of Alexey Kovyrin's loops code. http://github.com/kovyrin/loops
38
54
  email: glebpom@gmail.com
39
55
  executables: