basic_daemon 0.9.0 → 0.9.1
Sign up to get free protection for your applications and to get access to all the features.
- data/History.rdoc +57 -0
- data/LICENSE +21 -0
- data/{README → README.rdoc} +4 -4
- data/Rakefile +52 -0
- data/examples/functional.rb +16 -19
- data/examples/objectoriented.rb +0 -2
- data/lib/basic_daemon.rb +6 -11
- data/test/functional_basic_daemon_test.rb +1 -1
- metadata +6 -3
data/History.rdoc
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
= 0.9.0 - 20100216
|
2
|
+
|
3
|
+
* Bumped the version to 0.9.0 because it's just about ready for a 1.0 release.
|
4
|
+
* cleaned up tests and added a restart test to oo and function
|
5
|
+
* Still need to work on documentation and fix the Rakefile
|
6
|
+
|
7
|
+
= 0.1.5 - 20100118
|
8
|
+
|
9
|
+
Doing some refactoring and broke out code which determines the PID into its
|
10
|
+
own method "pid".
|
11
|
+
|
12
|
+
Added LICENSE and updated TODO
|
13
|
+
|
14
|
+
Updated Rakefile and tests
|
15
|
+
|
16
|
+
= 0.1.4 - 20100115
|
17
|
+
|
18
|
+
Provided basic documentation for the methods.
|
19
|
+
|
20
|
+
= 0.1.3 - 20091230
|
21
|
+
|
22
|
+
Breaking out tests
|
23
|
+
|
24
|
+
* Broke out tests to organize by functionality
|
25
|
+
|
26
|
+
= 0.1.2 - 20091230
|
27
|
+
|
28
|
+
Switched back to Test::Unit
|
29
|
+
|
30
|
+
* Migrated all RSpec tests to Test::Unit
|
31
|
+
* Expanded tests to handle calling blocks
|
32
|
+
|
33
|
+
= 0.1.1 - 20090925
|
34
|
+
|
35
|
+
RSpec testing expansion.
|
36
|
+
|
37
|
+
* continuing to add tests to the spec.
|
38
|
+
* added a method to the library to determine if a PID is alive
|
39
|
+
|
40
|
+
= 0.1.0 - 20090923
|
41
|
+
|
42
|
+
Major bug fixes
|
43
|
+
|
44
|
+
* The daemon now correctly forks off from the calling process.
|
45
|
+
* The procedural means of executing a daemon have been eliminated.
|
46
|
+
|
47
|
+
= 0.0.5 - 20090921
|
48
|
+
|
49
|
+
Began moving tests to RSpec.
|
50
|
+
|
51
|
+
= 0.0.5 - 20090812
|
52
|
+
|
53
|
+
Started recording changes to the repository in to line up with git commit
|
54
|
+
messages.
|
55
|
+
|
56
|
+
* addition of License.txt and History.txt, though mostly empty
|
57
|
+
* Initial gemspec was created. The daemon is now gemable
|
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
Copyright (c) 2010 Samuel Mullen
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
21
|
+
|
data/{README → README.rdoc}
RENAMED
@@ -5,6 +5,10 @@ A basic library for creating daemonized processes
|
|
5
5
|
|
6
6
|
This library works with Ruby 1.8, Ruby 1.9, and JRuby and is licensed under the MIT License.
|
7
7
|
|
8
|
+
Installation
|
9
|
+
|
10
|
+
sudo gem install basic_daemon
|
11
|
+
|
8
12
|
Gettings Started
|
9
13
|
|
10
14
|
There are currently two ways of using the basic_daemon library: 1) Objected Oriented; 2) Functional.
|
@@ -88,7 +92,3 @@ Example:
|
|
88
92
|
Most Linux users will want to instantiate thusly:
|
89
93
|
|
90
94
|
BasicDaemon.new(:piddir => '/var/lock')
|
91
|
-
|
92
|
-
Installation
|
93
|
-
|
94
|
-
pending
|
data/Rakefile
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
$:.unshift File.expand_path("../lib", __FILE__)
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'lib/basic_daemon'
|
5
|
+
require 'rake/testtask'
|
6
|
+
require 'rake/gempackagetask'
|
7
|
+
|
8
|
+
lib_dir = File.expand_path('lib')
|
9
|
+
test_dir = File.expand_path('test')
|
10
|
+
|
11
|
+
gem_spec = Gem::Specification.new do |s|
|
12
|
+
s.name = "basic_daemon"
|
13
|
+
s.version = BasicDaemon::VERSION
|
14
|
+
s.authors = ["Samuel Mullen"]
|
15
|
+
s.email = "samullen@gmail.com"
|
16
|
+
s.homepage = "http://github.com/samullen/basic_daemon"
|
17
|
+
s.summary = "A simple ruby library for daemonizing processes"
|
18
|
+
s.authors = ["Samuel Mullen"]
|
19
|
+
s.email = "samullen@gmail.com"
|
20
|
+
s.test_files = Dir['test/**/*.rb']
|
21
|
+
s.description = false
|
22
|
+
s.files = [
|
23
|
+
"History.rdoc",
|
24
|
+
"LICENSE",
|
25
|
+
"README.rdoc",
|
26
|
+
"Rakefile",
|
27
|
+
"examples/functional.rb",
|
28
|
+
"examples/objectoriented.rb",
|
29
|
+
"lib/basic_daemon.rb"
|
30
|
+
] + s.test_files
|
31
|
+
end
|
32
|
+
|
33
|
+
Rake::TestTask.new(:test) do |test|
|
34
|
+
test.libs = [lib_dir, test_dir]
|
35
|
+
test.pattern = 'test/**/*rb'
|
36
|
+
test.verbose = true
|
37
|
+
end
|
38
|
+
|
39
|
+
Rake::GemPackageTask.new(gem_spec) do |pkg|
|
40
|
+
pkg.need_zip = false
|
41
|
+
pkg.need_tar = false
|
42
|
+
end
|
43
|
+
|
44
|
+
desc "Install the gem locally"
|
45
|
+
task :install => [:test, :gem] do
|
46
|
+
sh %{gem install pkg/#{gem_spec.name}-#{gem_spec.version}}
|
47
|
+
end
|
48
|
+
|
49
|
+
desc "Remove the pkg directory and all of its contents."
|
50
|
+
task :clean => :clobber_package
|
51
|
+
|
52
|
+
task :default => [:test, :gem]
|
data/examples/functional.rb
CHANGED
@@ -1,8 +1,5 @@
|
|
1
1
|
#!/usr/bin/ruby
|
2
2
|
|
3
|
-
# STDERR.puts "this won't work until I get the block stuff working."
|
4
|
-
# exit
|
5
|
-
|
6
3
|
require File.join(File.dirname(__FILE__), '..', 'lib','basic_daemon')
|
7
4
|
|
8
5
|
basedir = "/tmp" # change this to where you want to deal with things
|
@@ -10,29 +7,29 @@ pidfile = File.basename($PROGRAM_NAME, File.extname($PROGRAM_NAME))
|
|
10
7
|
|
11
8
|
d = BasicDaemon.new({:pidfile => pidfile, :piddir => basedir, :workingdir => basedir})
|
12
9
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
i += 1
|
25
|
-
end
|
10
|
+
process = Proc.new do
|
11
|
+
i = 1
|
12
|
+
foo = open(basedir + "/out", "w")
|
13
|
+
|
14
|
+
while true do
|
15
|
+
foo.puts "loop: #{i}"
|
16
|
+
foo.flush
|
17
|
+
sleep 5
|
18
|
+
|
19
|
+
i += 1
|
26
20
|
end
|
21
|
+
end
|
22
|
+
|
23
|
+
if ARGV[0] == 'start'
|
24
|
+
d.start &process
|
27
25
|
elsif ARGV[0] == 'stop'
|
28
26
|
d.stop
|
29
27
|
exit!
|
30
28
|
elsif ARGV[0] == 'restart'
|
31
|
-
d.restart
|
29
|
+
d.restart &process
|
32
30
|
else
|
33
|
-
STDERR.puts "wrong!
|
31
|
+
STDERR.puts "wrong! Use start, stop, or restart."
|
34
32
|
exit!
|
35
33
|
end
|
36
34
|
|
37
|
-
puts 'got here'
|
38
35
|
exit
|
data/examples/objectoriented.rb
CHANGED
@@ -25,7 +25,6 @@ end
|
|
25
25
|
d = MyDaemon.new(:pidfile => pidfile, :piddir => basedir, :workingdir => basedir)
|
26
26
|
|
27
27
|
if ARGV[0] == 'start'
|
28
|
-
puts "Should print 'got here' on the next line"
|
29
28
|
d.start
|
30
29
|
elsif ARGV[0] == 'stop'
|
31
30
|
d.stop
|
@@ -37,5 +36,4 @@ else
|
|
37
36
|
exit!
|
38
37
|
end
|
39
38
|
|
40
|
-
puts 'got here'
|
41
39
|
exit
|
data/lib/basic_daemon.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
class BasicDaemon
|
2
2
|
attr_accessor :workingdir, :pidfile, :piddir, :process
|
3
3
|
|
4
|
-
VERSION = '0.9.
|
4
|
+
VERSION = '0.9.1'
|
5
5
|
|
6
6
|
DEFAULT_OPTIONS = {
|
7
7
|
:pidfile => File.basename($PROGRAM_NAME, File.extname($PROGRAM_NAME)),
|
@@ -38,7 +38,6 @@ class BasicDaemon
|
|
38
38
|
@pidfile = opts[:pidfile]
|
39
39
|
@workingdir = opts[:workingdir]
|
40
40
|
@pid = nil
|
41
|
-
@process = nil
|
42
41
|
end
|
43
42
|
|
44
43
|
# Returns the fullpath to the file containing the process ID (PID)
|
@@ -71,10 +70,6 @@ class BasicDaemon
|
|
71
70
|
exit!
|
72
71
|
end
|
73
72
|
|
74
|
-
if block_given?
|
75
|
-
@process = block
|
76
|
-
end
|
77
|
-
|
78
73
|
#----- Fork off from the calling process -----#
|
79
74
|
begin
|
80
75
|
fork do
|
@@ -103,8 +98,8 @@ class BasicDaemon
|
|
103
98
|
STDOUT.reopen("/dev/null", "w")
|
104
99
|
STDERR.reopen("/dev/null", "w")
|
105
100
|
|
106
|
-
|
107
|
-
|
101
|
+
if block_given?
|
102
|
+
block.call
|
108
103
|
else
|
109
104
|
self.run
|
110
105
|
end
|
@@ -139,14 +134,14 @@ class BasicDaemon
|
|
139
134
|
# restarts the daemon by first killing it and then restarting.
|
140
135
|
#
|
141
136
|
# Warning: does not work if block is initially passed to start.
|
142
|
-
def restart
|
137
|
+
def restart(&block)
|
143
138
|
self.stop
|
144
139
|
@pid = nil
|
145
140
|
|
146
|
-
unless
|
141
|
+
unless block_given?
|
147
142
|
self.start
|
148
143
|
else
|
149
|
-
self.start
|
144
|
+
self.start &block
|
150
145
|
end
|
151
146
|
end
|
152
147
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: basic_daemon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Mullen
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-02-
|
12
|
+
date: 2010-02-22 00:00:00 -06:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -22,7 +22,10 @@ extensions: []
|
|
22
22
|
extra_rdoc_files: []
|
23
23
|
|
24
24
|
files:
|
25
|
-
-
|
25
|
+
- History.rdoc
|
26
|
+
- LICENSE
|
27
|
+
- README.rdoc
|
28
|
+
- Rakefile
|
26
29
|
- examples/functional.rb
|
27
30
|
- examples/objectoriented.rb
|
28
31
|
- lib/basic_daemon.rb
|