process-daemon 0.5.1 → 0.5.3
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/controller.rb +2 -2
- data/lib/process/daemon/version.rb +1 -1
- data/lib/process/daemon.rb +17 -14
- data/test/test_daemon.rb +1 -1
- metadata +16 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 21fd4815d28972123439e807a1e57df28f451f90
|
4
|
+
data.tar.gz: 50b53976e7f7e5800092b7e0b5c612863d718c1b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fb95d20032105ecde239c38b303deab08312fe3fb9c572b64a4d663942ed9f077044da8415157c965e41d4dc69e17fdf20df982c7331f259f423c98b7610f89d
|
7
|
+
data.tar.gz: 6fb6c323210283f063d74032157d1f9c4399963eba4e209063c1c828e255205e5cb8f9725439d7d9f43fe72e0a18ac4f89645f497e69325d1cdfa4dcf60212d2
|
@@ -97,7 +97,7 @@ module Process
|
|
97
97
|
|
98
98
|
# This function starts the daemon process in the background.
|
99
99
|
def start
|
100
|
-
@output.puts Rainbow("Starting daemon...").blue
|
100
|
+
@output.puts Rainbow("Starting #{@daemon.name} daemon...").blue
|
101
101
|
|
102
102
|
case ProcessFile.status(@daemon)
|
103
103
|
when :running
|
@@ -159,7 +159,7 @@ module Process
|
|
159
159
|
|
160
160
|
# Stops the daemon process.
|
161
161
|
def stop
|
162
|
-
@output.puts Rainbow("Stopping daemon...").blue
|
162
|
+
@output.puts Rainbow("Stopping #{@daemon.name} daemon...").blue
|
163
163
|
|
164
164
|
# Check if the pid file exists...
|
165
165
|
unless File.file?(@daemon.process_file_path)
|
data/lib/process/daemon.rb
CHANGED
@@ -45,23 +45,21 @@ module Process
|
|
45
45
|
# The base directory specifies a path such that:
|
46
46
|
# working_directory = "."
|
47
47
|
# log_directory = #{working_directory}/log
|
48
|
-
# log_file_path = #{log_directory}/#{
|
48
|
+
# log_file_path = #{log_directory}/#{name}.log
|
49
49
|
# runtime_directory = #{working_directory}/run
|
50
|
-
# process_file_path = #{runtime_directory}/#{
|
50
|
+
# process_file_path = #{runtime_directory}/#{name}.pid
|
51
51
|
class Daemon
|
52
|
-
def initialize(
|
53
|
-
@
|
52
|
+
def initialize(working_directory = ".")
|
53
|
+
@working_directory = working_directory
|
54
54
|
end
|
55
55
|
|
56
56
|
# Return the name of the daemon
|
57
|
-
def
|
57
|
+
def name
|
58
58
|
return self.class.name.gsub(/[^a-zA-Z0-9]+/, '-')
|
59
59
|
end
|
60
60
|
|
61
61
|
# The directory the daemon will run in.
|
62
|
-
|
63
|
-
@base_directory
|
64
|
-
end
|
62
|
+
attr :working_directory
|
65
63
|
|
66
64
|
# Return the directory to store log files in.
|
67
65
|
def log_directory
|
@@ -70,7 +68,7 @@ module Process
|
|
70
68
|
|
71
69
|
# Standard log file for stdout and stderr.
|
72
70
|
def log_file_path
|
73
|
-
File.join(log_directory, "#{
|
71
|
+
File.join(log_directory, "#{name}.log")
|
74
72
|
end
|
75
73
|
|
76
74
|
# Runtime data directory for the daemon.
|
@@ -80,13 +78,13 @@ module Process
|
|
80
78
|
|
81
79
|
# Standard location of process pid file.
|
82
80
|
def process_file_path
|
83
|
-
File.join(runtime_directory, "#{
|
81
|
+
File.join(runtime_directory, "#{name}.pid")
|
84
82
|
end
|
85
83
|
|
86
84
|
# Mark the output log.
|
87
85
|
def mark_log
|
88
86
|
File.open(log_file_path, "a") do |log_file|
|
89
|
-
log_file.puts "=== Log Marked @ #{Time.now.to_s} ==="
|
87
|
+
log_file.puts "=== Log Marked @ #{Time.now.to_s} [#{Process.pid}] ==="
|
90
88
|
end
|
91
89
|
end
|
92
90
|
|
@@ -114,8 +112,13 @@ module Process
|
|
114
112
|
|
115
113
|
# The main function to setup any environment required by the daemon
|
116
114
|
def prefork
|
117
|
-
|
118
|
-
|
115
|
+
# We freeze the working directory because it can't change after forking:
|
116
|
+
@working_directory = File.expand_path(working_directory)
|
117
|
+
|
118
|
+
def self.working_directory
|
119
|
+
@working_directory
|
120
|
+
end
|
121
|
+
|
119
122
|
FileUtils.mkdir_p(log_directory)
|
120
123
|
FileUtils.mkdir_p(runtime_directory)
|
121
124
|
end
|
@@ -127,7 +130,7 @@ module Process
|
|
127
130
|
# The main function to stop the daemon
|
128
131
|
def shutdown
|
129
132
|
# Interrupt all children processes, preferably to stop them so that they are not left behind.
|
130
|
-
Process.kill(
|
133
|
+
Process.kill(:INT, 0)
|
131
134
|
end
|
132
135
|
|
133
136
|
def run
|
data/test/test_daemon.rb
CHANGED
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.5.
|
4
|
+
version: 0.5.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Williams
|
@@ -14,56 +14,56 @@ dependencies:
|
|
14
14
|
name: rainbow
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '2.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '1.3'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.3'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: minitest
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - ~>
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: 5.3.2
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - ~>
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 5.3.2
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
description:
|
@@ -73,8 +73,8 @@ executables: []
|
|
73
73
|
extensions: []
|
74
74
|
extra_rdoc_files: []
|
75
75
|
files:
|
76
|
-
- .gitignore
|
77
|
-
- .travis.yml
|
76
|
+
- ".gitignore"
|
77
|
+
- ".travis.yml"
|
78
78
|
- Gemfile
|
79
79
|
- README.md
|
80
80
|
- Rakefile
|
@@ -97,21 +97,21 @@ require_paths:
|
|
97
97
|
- lib
|
98
98
|
required_ruby_version: !ruby/object:Gem::Requirement
|
99
99
|
requirements:
|
100
|
-
- -
|
100
|
+
- - ">="
|
101
101
|
- !ruby/object:Gem::Version
|
102
102
|
version: 1.9.3
|
103
103
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
104
104
|
requirements:
|
105
|
-
- -
|
105
|
+
- - ">="
|
106
106
|
- !ruby/object:Gem::Version
|
107
107
|
version: '0'
|
108
108
|
requirements: []
|
109
109
|
rubyforge_project:
|
110
|
-
rubygems_version: 2.
|
110
|
+
rubygems_version: 2.2.2
|
111
111
|
signing_key:
|
112
112
|
specification_version: 4
|
113
|
-
summary:
|
114
|
-
and daemons. Provides standard `start`, `stop`, `restart`, `status` operations.
|
113
|
+
summary: "`Process::Daemon` is a stable and helpful base class for long running tasks
|
114
|
+
and daemons. Provides standard `start`, `stop`, `restart`, `status` operations."
|
115
115
|
test_files:
|
116
116
|
- test/daemon.rb
|
117
117
|
- test/test_daemon.rb
|