process-daemon 0.1.0 → 0.3.0
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.
- checksums.yaml +4 -4
- data/lib/process/daemon.rb +23 -3
- data/lib/process/daemon/controller.rb +6 -6
- data/lib/process/daemon/version.rb +1 -1
- data/process-daemon.gemspec +1 -0
- data/test/daemon.rb +47 -0
- data/test/test_daemon.rb +16 -3
- metadata +17 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ad2299e94a6c61f1720944c19525b84c535c597f
|
4
|
+
data.tar.gz: 38aed4cdf9ee795711e7b9507bb1008e7a9940c4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e6653cc71627aac7a2ebb0c5bf90c71eda263507d01f6ab5d1a6bd267fdfb866cf84a92e5f9ff13dc50219f2eca3e607843a4e161b9ddfdd87559bb6a3b3c662
|
7
|
+
data.tar.gz: 85831d76b49be8ee9e046e6a4921d72fa4ffd08b80fcee77dfb98652ce710504e9057a42cd645d758ed593ddef389a03de96b9b1c638ef1ba6a4e265be36ecbb
|
data/lib/process/daemon.rb
CHANGED
@@ -130,10 +130,30 @@ module Process
|
|
130
130
|
Process.kill(0, :INT)
|
131
131
|
end
|
132
132
|
|
133
|
+
# Helper methods for static daemon instance
|
134
|
+
|
135
|
+
def self.instance
|
136
|
+
@instance ||= self.new
|
137
|
+
end
|
138
|
+
|
139
|
+
# Main entry point for command line:
|
133
140
|
def self.daemonize(argv = ARGV)
|
134
|
-
|
135
|
-
|
136
|
-
|
141
|
+
Controller.daemonize(instance, argv)
|
142
|
+
end
|
143
|
+
|
144
|
+
# Start the daemon instance:
|
145
|
+
def self.start
|
146
|
+
Controller.start(instance)
|
147
|
+
end
|
148
|
+
|
149
|
+
# Stop the daemon instance:
|
150
|
+
def self.stop
|
151
|
+
Controller.stop(instance)
|
152
|
+
end
|
153
|
+
|
154
|
+
# Get the status of the daemon instance, `:stopped`, `:running` or `:unknown`.
|
155
|
+
def self.status
|
156
|
+
ProcessFile.status(instance)
|
137
157
|
end
|
138
158
|
end
|
139
159
|
end
|
@@ -29,24 +29,24 @@ module Process
|
|
29
29
|
module Controller
|
30
30
|
# This function is called from the daemon executable. It processes ARGV and checks whether the user is asking for `start`, `stop`, `restart`, `status`.
|
31
31
|
def self.daemonize(daemon, argv = ARGV)
|
32
|
-
case argv.shift
|
33
|
-
when
|
32
|
+
case argv.shift.to_sym
|
33
|
+
when :start
|
34
34
|
start(daemon)
|
35
35
|
status(daemon)
|
36
|
-
when
|
36
|
+
when :stop
|
37
37
|
stop(daemon)
|
38
38
|
status(daemon)
|
39
39
|
ProcessFile.cleanup(daemon)
|
40
|
-
when
|
40
|
+
when :restart
|
41
41
|
stop(daemon)
|
42
42
|
ProcessFile.cleanup(daemon)
|
43
43
|
start(daemon)
|
44
44
|
status(daemon)
|
45
|
-
when
|
45
|
+
when :status
|
46
46
|
status(daemon)
|
47
47
|
else
|
48
48
|
puts "Invalid command. Please specify start, restart, stop or status."
|
49
|
-
exit
|
49
|
+
exit 1
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
data/process-daemon.gemspec
CHANGED
data/test/daemon.rb
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'process/daemon'
|
4
|
+
|
5
|
+
require 'webrick'
|
6
|
+
require 'webrick/https'
|
7
|
+
|
8
|
+
require 'xmlrpc/server'
|
9
|
+
|
10
|
+
# Very simple XMLRPC daemon
|
11
|
+
class XMLRPCDaemon < Process::Daemon
|
12
|
+
def base_directory
|
13
|
+
File.join(__dir__, "tmp")
|
14
|
+
end
|
15
|
+
|
16
|
+
def startup
|
17
|
+
puts "Starting server..."
|
18
|
+
|
19
|
+
@rpc_server = WEBrick::HTTPServer.new(
|
20
|
+
:Port => 31337,
|
21
|
+
:BindAddress => "0.0.0.0"
|
22
|
+
)
|
23
|
+
|
24
|
+
@listener = XMLRPC::WEBrickServlet.new
|
25
|
+
|
26
|
+
@listener.add_handler("fourty-two") do |amount|
|
27
|
+
"Hello World"
|
28
|
+
end
|
29
|
+
|
30
|
+
@rpc_server.mount("/RPC2", @listener)
|
31
|
+
|
32
|
+
begin
|
33
|
+
@rpc_server.start
|
34
|
+
rescue Interrupt
|
35
|
+
puts "Daemon interrupted..."
|
36
|
+
ensure
|
37
|
+
@rpc_server.shutdown
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def shutdown
|
42
|
+
puts "Stopping the RPC server..."
|
43
|
+
@rpc_server.stop
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
XMLRPCDaemon.daemonize
|
data/test/test_daemon.rb
CHANGED
@@ -75,14 +75,23 @@ class XMLRPCDaemon < Process::Daemon
|
|
75
75
|
end
|
76
76
|
end
|
77
77
|
|
78
|
+
class SleepDaemon < Process::Daemon
|
79
|
+
def working_directory
|
80
|
+
File.join(__dir__, "tmp")
|
81
|
+
end
|
82
|
+
|
83
|
+
def startup
|
84
|
+
sleep 1 while true
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
78
88
|
class DaemonTest < MiniTest::Test
|
79
89
|
def setup
|
80
|
-
|
81
|
-
Process::Daemon::Controller.start(@daemon)
|
90
|
+
XMLRPCDaemon.start
|
82
91
|
end
|
83
92
|
|
84
93
|
def teardown
|
85
|
-
|
94
|
+
XMLRPCDaemon.stop
|
86
95
|
end
|
87
96
|
|
88
97
|
def test_connection
|
@@ -93,4 +102,8 @@ class DaemonTest < MiniTest::Test
|
|
93
102
|
|
94
103
|
assert_equal 10, total
|
95
104
|
end
|
105
|
+
|
106
|
+
def test_instances
|
107
|
+
refute_equal SleepDaemon.instance, XMLRPCDaemon.instance
|
108
|
+
end
|
96
109
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: process-daemon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Williams
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.3'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: minitest
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 5.3.2
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 5.3.2
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: rake
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -71,6 +85,7 @@ files:
|
|
71
85
|
- lib/process/daemon/process_file.rb
|
72
86
|
- lib/process/daemon/version.rb
|
73
87
|
- process-daemon.gemspec
|
88
|
+
- test/daemon.rb
|
74
89
|
- test/test_daemon.rb
|
75
90
|
homepage: ''
|
76
91
|
licenses:
|
@@ -98,4 +113,5 @@ specification_version: 4
|
|
98
113
|
summary: '`Process::Daemon` is a stable and helpful base class for long running tasks
|
99
114
|
and daemons. Provides standard `start`, `stop`, `restart`, `status` operations.'
|
100
115
|
test_files:
|
116
|
+
- test/daemon.rb
|
101
117
|
- test/test_daemon.rb
|