process-daemon 0.5.1 → 0.5.3

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: 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