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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9ac6a1383d85f2ac030dd67378c030b390ec8e57
4
- data.tar.gz: bf7e354b299aa95289c9413f6433f05c3e089e1c
3
+ metadata.gz: 21fd4815d28972123439e807a1e57df28f451f90
4
+ data.tar.gz: 50b53976e7f7e5800092b7e0b5c612863d718c1b
5
5
  SHA512:
6
- metadata.gz: f2dd1c47ad979b2799212c33db7794254a5b732a84bdb55076ee4725936c4f2c3dd40eea3a70f21f8663946208391d2b12b300e9e0f22f655f885fbfbf0925f4
7
- data.tar.gz: de24582d288d5299e142c6a094eaabda43cc8f73fe512f660a114d5aa7de235e04fd835efec09d9aec5f26bfdd609f35ecc8f91cd6a18a2500e7180bc86cac0f
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)
@@ -20,6 +20,6 @@
20
20
 
21
21
  module Process
22
22
  class Daemon
23
- VERSION = "0.5.1"
23
+ VERSION = "0.5.3"
24
24
  end
25
25
  end
@@ -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}/#{daemon_name}.log
48
+ # log_file_path = #{log_directory}/#{name}.log
49
49
  # runtime_directory = #{working_directory}/run
50
- # process_file_path = #{runtime_directory}/#{daemon_name}.pid
50
+ # process_file_path = #{runtime_directory}/#{name}.pid
51
51
  class Daemon
52
- def initialize(base_directory = ".")
53
- @base_directory = base_directory
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 daemon_name
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
- def working_directory
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, "#{daemon_name}.log")
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, "#{daemon_name}.pid")
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
- @base_directory = File.expand_path(@base_directory) if @base_directory
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(0, :INT)
133
+ Process.kill(:INT, 0)
131
134
  end
132
135
 
133
136
  def run
data/test/test_daemon.rb CHANGED
@@ -79,7 +79,7 @@ class SleepDaemon < Process::Daemon
79
79
  def working_directory
80
80
  File.join(__dir__, "tmp")
81
81
  end
82
-
82
+
83
83
  def startup
84
84
  sleep 1 while true
85
85
  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.5.1
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.0.3
110
+ rubygems_version: 2.2.2
111
111
  signing_key:
112
112
  specification_version: 4
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.'
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