rbdaemon 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -5,8 +5,6 @@ require 'etc'
5
5
  require 'syslog'
6
6
 
7
7
  module RBDaemon
8
- class DaemonError < StandardError; end
9
-
10
8
  class Daemon
11
9
  def initialize(options = {}, *args)
12
10
  exit!(0) if fork
@@ -37,7 +35,7 @@ module RBDaemon
37
35
  ident = options[:pid_file] ? options[:pid_file] : $0
38
36
  ident = File.basename(ident).split(/\./)[0]
39
37
 
40
- Signal.trap('EXIT') do
38
+ at_exit do
41
39
  Syslog::log(Syslog::LOG_INFO, "#{ident} exited")
42
40
  options[:change_root] or (@pid_file and @pid_file.delete) rescue nil
43
41
  end
@@ -1,4 +1,4 @@
1
1
 
2
2
  module RBDaemon
3
- VERSION = '0.0.1'
3
+ VERSION = '0.0.2'
4
4
  end
data/rbdaemon.gemspec CHANGED
@@ -16,4 +16,6 @@ Gem::Specification.new do |gem|
16
16
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
17
17
  gem.require_paths = ["lib"]
18
18
  gem.license = 'MIT'
19
+ gem.add_development_dependency 'bundler'
20
+ gem.add_development_dependency 'rake'
19
21
  end
data/test/tc_daemon.rb CHANGED
@@ -2,6 +2,7 @@
2
2
  require 'test/unit'
3
3
  require 'rbdaemon/daemon'
4
4
  require 'tempfile'
5
+ require 'pathname'
5
6
 
6
7
  class TC_Daemon < Test::Unit::TestCase
7
8
  def test_smoke
@@ -9,7 +10,7 @@ class TC_Daemon < Test::Unit::TestCase
9
10
  tmpfile = ::Tempfile.new('tc_daemon', '/tmp')
10
11
  File::chmod(0666, tmpfile.path)
11
12
  Process.fork do
12
- RBDaemon::Daemon.new({:user => 'nobody', :groups => 'nobody',
13
+ RBDaemon::Daemon.new({:user => 'daemon', :groups => ['daemon'],
13
14
  :change_root => '/tmp'},
14
15
  3, "ok\n", tmpfile.path) do |daemon, times, str, path|
15
16
  tmpfile = File.new(File.basename(path), 'w')
@@ -55,8 +56,8 @@ class TC_Daemon < Test::Unit::TestCase
55
56
  assert_equal("ok\n", lines[0])
56
57
 
57
58
  # check uid and gid
58
- uid = Etc.getpwnam('nobody').uid
59
- gid = Etc.getgrnam('nobody').gid
59
+ uid = Etc.getpwnam('daemon').uid
60
+ gid = Etc.getgrnam('daemon').gid
60
61
  status['Uid'].split(/\s+/).each do |s|
61
62
  assert_equal(uid, s.to_i)
62
63
  end
@@ -65,17 +66,23 @@ class TC_Daemon < Test::Unit::TestCase
65
66
  end
66
67
 
67
68
  # check fds
69
+ major, minor, patch = RUBY_VERSION.split(/\./).map{|i| i.to_i}
70
+ if major > 1 or (major == 1 and minor > 8)
71
+ offset = 2
72
+ else
73
+ offset = 0
74
+ end
68
75
  Dir["#{proc_root}/fd/*"].each do |fn|
69
76
  fd = File.basename(fn).to_i
70
- assert((0..5).to_a.include?(fd))
77
+ assert((0..(5+offset)).to_a.include?(fd))
71
78
  case fd
72
79
  when 0, 1, 2
73
80
  assert_equal('/dev/null', File::readlink(fn))
74
- when 3
75
- assert_equal(pid_file, File::readlink(fn))
76
- when 4
81
+ when 3 + offset
82
+ assert_equal(Pathname.new(pid_file).realpath.to_s, File::readlink(fn))
83
+ when 4 + offset
77
84
  assert_match(/socket:\[\d+\]/, File::readlink(fn))
78
- when 5
85
+ when 5 + offset
79
86
  assert_equal(tmpfile.path, File::readlink(fn))
80
87
  end
81
88
  end
metadata CHANGED
@@ -1,34 +1,55 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: rbdaemon
3
- version: !ruby/object:Gem::Version
4
- hash: 29
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 0
9
- - 1
10
- version: 0.0.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Changli Gao
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-11-30 00:00:00 +08:00
19
- default_executable:
20
- dependencies: []
21
-
12
+ date: 2012-12-25 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
22
46
  description: A daemon library in Ruby
23
- email:
47
+ email:
24
48
  - xiaosuo@gmail.com
25
49
  executables: []
26
-
27
50
  extensions: []
28
-
29
51
  extra_rdoc_files: []
30
-
31
- files:
52
+ files:
32
53
  - .gitignore
33
54
  - Gemfile
34
55
  - LICENSE.txt
@@ -42,40 +63,31 @@ files:
42
63
  - rbdaemon.gemspec
43
64
  - test/tc_daemon.rb
44
65
  - test/tc_pidfile.rb
45
- has_rdoc: true
46
66
  homepage: http://github.com/xiaosuo/rbdaemon
47
- licenses:
67
+ licenses:
48
68
  - MIT
49
69
  post_install_message:
50
70
  rdoc_options: []
51
-
52
- require_paths:
71
+ require_paths:
53
72
  - lib
54
- required_ruby_version: !ruby/object:Gem::Requirement
73
+ required_ruby_version: !ruby/object:Gem::Requirement
55
74
  none: false
56
- requirements:
57
- - - ">="
58
- - !ruby/object:Gem::Version
59
- hash: 3
60
- segments:
61
- - 0
62
- version: "0"
63
- required_rubygems_version: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ required_rubygems_version: !ruby/object:Gem::Requirement
64
80
  none: false
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- hash: 3
69
- segments:
70
- - 0
71
- version: "0"
81
+ requirements:
82
+ - - ! '>='
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
72
85
  requirements: []
73
-
74
86
  rubyforge_project:
75
- rubygems_version: 1.3.7
87
+ rubygems_version: 1.8.23
76
88
  signing_key:
77
89
  specification_version: 3
78
90
  summary: Yet another daemon library in Ruby
79
- test_files:
91
+ test_files:
80
92
  - test/tc_daemon.rb
81
93
  - test/tc_pidfile.rb