rbdaemon 0.0.1 → 0.0.2
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/lib/rbdaemon/daemon.rb +1 -3
- data/lib/rbdaemon/version.rb +1 -1
- data/rbdaemon.gemspec +2 -0
- data/test/tc_daemon.rb +15 -8
- metadata +55 -43
data/lib/rbdaemon/daemon.rb
CHANGED
@@ -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
|
-
|
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
|
data/lib/rbdaemon/version.rb
CHANGED
data/rbdaemon.gemspec
CHANGED
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 => '
|
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('
|
59
|
-
gid = Etc.getgrnam('
|
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
|
-
|
5
|
-
prerelease:
|
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
|
-
|
19
|
-
|
20
|
-
|
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
|
-
|
60
|
-
|
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
|
-
|
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.
|
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
|