daemonizer 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
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: