process-daemon 0.1.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b9fd3e1daea454199404057b9b504216e8a93a5e
4
- data.tar.gz: 0b3858725986811d62424f5182deba146f7d96a0
3
+ metadata.gz: ad2299e94a6c61f1720944c19525b84c535c597f
4
+ data.tar.gz: 38aed4cdf9ee795711e7b9507bb1008e7a9940c4
5
5
  SHA512:
6
- metadata.gz: c65fb3fd1f265a5fc532331435eb2905d7ca0bcc8de4d3b8cc2c0598196a0d3c5627d1542ed8baa93839595247902e5238e79342c8ed41a05d83d3b5bbcba502
7
- data.tar.gz: 8a121e07c4d44af7c8c2a653ec44ed2c78455b5b372057f7f14b05f52ffbc8405e7f0f4979bf1f42d6630851a5c0337aac7110c0030bafa38cf36c9fe78d3dc0
6
+ metadata.gz: e6653cc71627aac7a2ebb0c5bf90c71eda263507d01f6ab5d1a6bd267fdfb866cf84a92e5f9ff13dc50219f2eca3e607843a4e161b9ddfdd87559bb6a3b3c662
7
+ data.tar.gz: 85831d76b49be8ee9e046e6a4921d72fa4ffd08b80fcee77dfb98652ce710504e9057a42cd645d758ed593ddef389a03de96b9b1c638ef1ba6a4e265be36ecbb
@@ -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
- @@instance ||= self.new
135
-
136
- Controller.daemonize(@@instance, argv)
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 'start'
32
+ case argv.shift.to_sym
33
+ when :start
34
34
  start(daemon)
35
35
  status(daemon)
36
- when 'stop'
36
+ when :stop
37
37
  stop(daemon)
38
38
  status(daemon)
39
39
  ProcessFile.cleanup(daemon)
40
- when 'restart'
40
+ when :restart
41
41
  stop(daemon)
42
42
  ProcessFile.cleanup(daemon)
43
43
  start(daemon)
44
44
  status(daemon)
45
- when 'status'
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
 
@@ -20,6 +20,6 @@
20
20
 
21
21
  module Process
22
22
  class Daemon
23
- VERSION = "0.1.0"
23
+ VERSION = "0.3.0"
24
24
  end
25
25
  end
@@ -20,5 +20,6 @@ Gem::Specification.new do |spec|
20
20
  spec.add_dependency "rainbow", "~> 2.0"
21
21
 
22
22
  spec.add_development_dependency "bundler", "~> 1.3"
23
+ spec.add_development_dependency "minitest", "~> 5.3.2"
23
24
  spec.add_development_dependency "rake"
24
25
  end
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
- @daemon = XMLRPCDaemon.new
81
- Process::Daemon::Controller.start(@daemon)
90
+ XMLRPCDaemon.start
82
91
  end
83
92
 
84
93
  def teardown
85
- Process::Daemon::Controller.stop(@daemon)
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.1.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