daemons 1.1.9 → 1.4.1

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.
Files changed (48) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +1 -1
  3. data/README.md +207 -0
  4. data/Releases +85 -24
  5. data/examples/call/call.rb +13 -16
  6. data/examples/call/call_monitor.rb +13 -17
  7. data/examples/daemonize/daemonize.rb +4 -8
  8. data/examples/run/ctrl_crash.rb +0 -1
  9. data/examples/run/ctrl_custom_logfiles.rb +18 -0
  10. data/examples/run/ctrl_exec.rb +0 -1
  11. data/examples/run/ctrl_exit.rb +0 -1
  12. data/examples/run/ctrl_keep_pid_files.rb +1 -3
  13. data/examples/run/ctrl_monitor.rb +0 -1
  14. data/examples/run/ctrl_monitor_multiple.rb +17 -0
  15. data/examples/run/ctrl_monitor_nocrash.rb +15 -0
  16. data/examples/run/ctrl_multiple.rb +0 -1
  17. data/examples/run/ctrl_ontop.rb +0 -1
  18. data/examples/run/ctrl_optionparser.rb +5 -7
  19. data/examples/run/ctrl_proc.rb +8 -9
  20. data/examples/run/ctrl_proc_multiple.rb +4 -6
  21. data/examples/run/ctrl_proc_rand.rb +2 -4
  22. data/examples/run/ctrl_proc_simple.rb +0 -1
  23. data/examples/run/myserver.rb +0 -1
  24. data/examples/run/myserver_crashing.rb +5 -5
  25. data/examples/run/myserver_exiting.rb +2 -2
  26. data/examples/run/myserver_hanging.rb +4 -5
  27. data/examples/run/myserver_slowstop.rb +5 -6
  28. data/lib/daemons/application.rb +235 -229
  29. data/lib/daemons/application_group.rb +115 -100
  30. data/lib/daemons/change_privilege.rb +2 -4
  31. data/lib/daemons/cmdline.rb +75 -62
  32. data/lib/daemons/controller.rb +36 -54
  33. data/lib/daemons/daemonize.rb +74 -75
  34. data/lib/daemons/etc_extension.rb +3 -4
  35. data/lib/daemons/exceptions.rb +11 -13
  36. data/lib/daemons/monitor.rb +57 -77
  37. data/lib/daemons/pid.rb +26 -56
  38. data/lib/daemons/pidfile.rb +49 -44
  39. data/lib/daemons/pidmem.rb +5 -9
  40. data/lib/daemons/reporter.rb +54 -0
  41. data/lib/daemons/syslogio.rb +240 -0
  42. data/lib/daemons/version.rb +3 -0
  43. data/lib/daemons.rb +87 -77
  44. metadata +111 -46
  45. data/README +0 -214
  46. data/Rakefile +0 -90
  47. data/TODO +0 -2
  48. data/setup.rb +0 -1360
data/lib/daemons.rb CHANGED
@@ -1,19 +1,16 @@
1
1
  require 'optparse'
2
2
  require 'optparse/time'
3
3
 
4
-
5
- require 'daemons/pidfile'
4
+ require 'daemons/version'
5
+ require 'daemons/pidfile'
6
6
  require 'daemons/cmdline'
7
7
  require 'daemons/exceptions'
8
8
  require 'daemons/monitor'
9
9
 
10
-
11
10
  require 'daemons/application'
12
11
  require 'daemons/application_group'
13
12
  require 'daemons/controller'
14
13
 
15
- require 'timeout'
16
-
17
14
  # All functions and classes that Daemons provides reside in this module.
18
15
  #
19
16
  # Daemons is normally invoked by one of the following four ways:
@@ -25,7 +22,7 @@ require 'timeout'
25
22
  # to do anything useful.
26
23
  #
27
24
  # 2. <tt>Daemons.run_proc(app_name, options) { (...) }</tt>:
28
- # This is used in wrapper-scripts that are supposed to control a proc.
25
+ # This is used in wrapper-scripts that are supposed to control a proc.
29
26
  # Control is completely passed to the daemons library.
30
27
  # Such wrapper scripts need to be invoked with command line options like 'start' or 'stop'
31
28
  # to do anything useful.
@@ -50,7 +47,7 @@ require 'timeout'
50
47
  # the potential of acquiring a controlling terminal.
51
48
  # 4. Changes the current working directory to "/".
52
49
  # 5. Clears the file creation mask (sets +umask+ to 0000).
53
- # 6. Closes file descriptors (reopens +STDOUT+ and +STDERR+ to point to a logfile if
50
+ # 6. Closes file descriptors (reopens +$stdout+ and +$stderr+ to point to a logfile if
54
51
  # possible).
55
52
  #
56
53
  # So what does this mean for your daemons:
@@ -65,12 +62,8 @@ require 'timeout'
65
62
  # called <i>PidFiles</i> are stored.
66
63
  #
67
64
  module Daemons
68
-
69
- VERSION = "1.1.9"
70
-
71
65
  require 'daemons/daemonize'
72
-
73
-
66
+
74
67
  # Passes control to Daemons.
75
68
  # This is used in wrapper-scripts that are supposed to control other ruby scripts or
76
69
  # external applications. Control is completely passed to the daemons library.
@@ -82,7 +75,7 @@ module Daemons
82
75
  # Also note that Daemons cannot detect the directory in which the controlling
83
76
  # script resides, so this has to be either an absolute path or you have to run
84
77
  # the controlling script from the appropriate directory. Your script name should not
85
- # end with _monitor because that name is reserved for a monitor process which is
78
+ # end with _monitor because that name is reserved for a monitor process which is
86
79
  # there to restart your daemon if it crashes.
87
80
  #
88
81
  # +options+:: A hash that may contain one or more of the options listed below
@@ -97,44 +90,54 @@ module Daemons
97
90
  # These are assumed to be separated by an array element '--', .e.g.
98
91
  # ['start', 'f', '--', 'param1_for_script', 'param2_for_script'].
99
92
  # If not given, ARGV (the parameters given to the Ruby process) will be used.
100
- # <tt>:dir_mode</tt>:: Either <tt>:script</tt> (the directory for writing the pid files to
93
+ # <tt>:dir_mode</tt>:: Either <tt>:script</tt> (the directory for writing the pid files to
101
94
  # given by <tt>:dir</tt> is interpreted relative
102
- # to the script location given by +script+, the default) or <tt>:normal</tt> (the directory given by
103
- # <tt>:dir</tt> is interpreted as a (absolute or relative) path) or <tt>:system</tt>
95
+ # to the script location given by +script+, the default) or <tt>:normal</tt> (the directory given by
96
+ # <tt>:dir</tt> is interpreted as a (absolute or relative) path) or <tt>:system</tt>
104
97
  # (<tt>/var/run</tt> is used as the pid file directory)
105
98
  #
106
99
  # <tt>:dir</tt>:: Used in combination with <tt>:dir_mode</tt> (description above)
107
100
  # <tt>:multiple</tt>:: Specifies whether multiple instances of the same script are allowed to run at the
108
101
  # same time
109
- # <tt>:ontop</tt>:: When given (i.e. set to true), stay on top, i.e. do not daemonize the application
102
+ # <tt>:pid_delimiter</tt>:: Specifies the separator used when enumerating multiple process names/pid-files. Default is '_num'.
103
+ # <tt>:ontop</tt>:: When given (i.e. set to true), stay on top, i.e. do not daemonize the application
110
104
  # (but the pid-file and other things are written as usual)
105
+ # <tt>:shush</tt>:: When given (i.e. set to true), turn on silent mode (no output to the terminal)
111
106
  # <tt>:mode</tt>:: <tt>:load</tt> Load the script with <tt>Kernel.load</tt>;
112
107
  # note that :stop_proc only works for the :load (and :proc) mode.
113
108
  # <tt>:exec</tt> Execute the script file with <tt>Kernel.exec</tt>
114
- # <tt>:backtrace</tt>:: Write a backtrace of the last exceptions to the file '[app_name].log' in the
109
+ # <tt>:backtrace</tt>:: Write a backtrace of the last exceptions to the file '[app_name].log' in the
115
110
  # pid-file directory if the application exits due to an uncaught exception
116
111
  # <tt>:monitor</tt>:: Monitor the programs and restart crashed instances
112
+ # <tt>:monitor_interval</tt>:: Interval in sesconds at which to check whether the instances are still running
117
113
  # <tt>:log_dir</tt>:: A specific directory to put the log files into (when not given, resort to the default
118
114
  # location as derived from the :dir_mode and :dir options
119
- # <tt>:log_output</tt>:: When given (i.e. set to true), redirect both STDOUT and STDERR to a logfile named '[app_name].output' in the pid-file directory
115
+ # <tt>:logfilename</tt>:: Specifiy a custom log file name
116
+ # <tt>:log_output</tt>:: When given (i.e. set to true), redirect both $stdout and $stderr to a logfile named '[app_name].output' (or as given in :output_logfilename) in the pid-file directory
117
+ # <tt>:output_logfilename</tt>:: Specifiy a custom output redirection file name
118
+ # <tt>:log_output_syslog</tt>:: When set to true, redirect output into SYSLOG instead of the file. This overrides log_output setting.
120
119
  # <tt>:keep_pid_files</tt>:: When given do not delete lingering pid-files (files for which the process is no longer running).
121
120
  # <tt>:hard_exit</tt>:: When given use exit! to end a daemons instead of exit (this will for example
122
121
  # not call at_exit handlers).
123
122
  # <tt>:stop_proc</tt>:: A proc that will be called when the daemonized process receives a request to stop (works only for :load and :proc mode)
124
123
  #
125
124
  # -----
126
- #
125
+ #
127
126
  # === Example:
128
127
  # options = {
129
- # :app_name => "my_app",
130
- # :ARGV => ['start', '-f', '--', 'param_for_myscript']
131
- # :dir_mode => :script,
132
- # :dir => 'pids',
133
- # :multiple => true,
134
- # :ontop => true,
135
- # :mode => :exec,
136
- # :backtrace => true,
137
- # :monitor => true
128
+ # :app_name => "my_app",
129
+ # :ARGV => ['start', '-f', '--', 'param_for_myscript']
130
+ # :dir_mode => :script,
131
+ # :dir => 'pids',
132
+ # :multiple => true,
133
+ # :pid_delimiter => '.n',
134
+ # :ontop => true,
135
+ # :shush => false,
136
+ # :mode => :exec,
137
+ # :backtrace => true,
138
+ # :monitor => true,
139
+ # :logfilename => 'custom_logfile.log',
140
+ # :output_logfilename => 'custom_outputfile.txt'
138
141
  # }
139
142
  #
140
143
  # Daemons.run(File.join(File.dirname(__FILE__), 'myscript.rb'), options)
@@ -142,17 +145,16 @@ module Daemons
142
145
  def run(script, options = {})
143
146
  options[:script] = script
144
147
  @controller = Controller.new(options, options[:ARGV] || ARGV)
145
-
146
- @controller.catch_exceptions {
148
+
149
+ @controller.catch_exceptions do
147
150
  @controller.run
148
- }
149
-
151
+ end
152
+
150
153
  # I don't think anybody will ever use @group, as this location should not be reached under non-error conditions
151
154
  @group = @controller.group
152
155
  end
153
156
  module_function :run
154
-
155
-
157
+
156
158
  # Passes control to Daemons.
157
159
  # This function does the same as Daemons.run except that not a script but a proc
158
160
  # will be run as a daemon while this script provides command line options like 'start' or 'stop'
@@ -162,13 +164,13 @@ module Daemons
162
164
  # used to contruct the name of the pid files
163
165
  # and log files. Defaults to the basename of
164
166
  # the script.
165
- #
167
+ #
166
168
  # +options+:: A hash that may contain one or more of the options listed in the documentation for Daemons.run
167
169
  #
168
170
  # A block must be given to this function. The block will be used as the :proc entry in the options hash.
169
171
  #
170
172
  # -----
171
- #
173
+ #
172
174
  # === Example:
173
175
  #
174
176
  # Daemons.run_proc('myproc.rb') do
@@ -184,25 +186,24 @@ module Daemons
184
186
  options[:app_name] = app_name
185
187
  options[:mode] = :proc
186
188
  options[:proc] = block
187
-
189
+
188
190
  # we do not have a script location so the the :script :dir_mode cannot be used, change it to :normal
189
191
  if [nil, :script].include? options[:dir_mode]
190
192
  options[:dir_mode] = :normal
191
193
  options[:dir] ||= File.expand_path('.')
192
194
  end
193
-
195
+
194
196
  @controller = Controller.new(options, options[:ARGV] || ARGV)
195
-
196
- @controller.catch_exceptions {
197
+
198
+ @controller.catch_exceptions do
197
199
  @controller.run
198
- }
199
-
200
+ end
201
+
200
202
  # I don't think anybody will ever use @group, as this location should not be reached under non-error conditions
201
203
  @group = @controller.group
202
204
  end
203
205
  module_function :run_proc
204
-
205
-
206
+
206
207
  # Execute the block in a new daemon. <tt>Daemons.call</tt> will return immediately
207
208
  # after spawning the daemon with the new Application object as a return value.
208
209
  #
@@ -215,11 +216,13 @@ module Daemons
215
216
  # === Options:
216
217
  # <tt>:multiple</tt>:: Specifies whether multiple instances of the same script are allowed to run at the
217
218
  # same time
218
- # <tt>:ontop</tt>:: When given, stay on top, i.e. do not daemonize the application
219
- # <tt>:backtrace</tt>:: Write a backtrace of the last exceptions to the file '[app_name].log' in the
219
+ # <tt>:monitor</tt>:: Monitor the programs and restart crashed instances
220
+ # <tt>:monitor_interval</tt>:: Interval in sesconds at which to check whether the instances are still running
221
+ # <tt>:ontop</tt>:: When given, stay on top, i.e. do not daemonize the application
222
+ # <tt>:backtrace</tt>:: Write a backtrace of the last exceptions to the file '[app_name].log' in the
220
223
  # pid-file directory if the application exits due to an uncaught exception
221
224
  # -----
222
- #
225
+ #
223
226
  # === Example:
224
227
  # options = {
225
228
  # :app_name => "myproc",
@@ -237,49 +240,52 @@ module Daemons
237
240
  # end
238
241
  #
239
242
  def call(options = {}, &block)
240
- unless block_given?
241
- raise "Daemons.call: no block given"
242
- end
243
-
244
- options[:proc] = block
245
- options[:mode] = :proc
246
-
243
+ new_app = Daemons.new(options, &block)
244
+ new_app.start
245
+ new_app
246
+ end
247
+ module_function :call
248
+
249
+ # Create a new Daemon application, like <tt>Daemons.call</tt>, but will not start it automatically
250
+ def new(options = {}, &block)
251
+ fail 'Daemons.call: no block given' unless block_given?
252
+
247
253
  options[:app_name] ||= 'proc'
248
-
254
+ options[:proc] = Proc.new(&block)
255
+ options[:mode] = :proc
256
+ options[:dir_mode] = :normal
257
+
249
258
  @group ||= ApplicationGroup.new(options[:app_name], options)
250
-
251
- new_app = @group.new_application(options)
252
- new_app.start
253
259
 
254
- return new_app
260
+ @group.new_application(options)
255
261
  end
256
- module_function :call
257
-
258
-
262
+ module_function :new
263
+
259
264
  # Daemonize the currently runnig process, i.e. the calling process will become a daemon.
260
265
  #
261
266
  # +options+:: A hash that may contain one or more of the options listed below
262
267
  #
263
268
  # === Options:
264
- # <tt>:ontop</tt>:: When given, stay on top, i.e. do not daemonize the application
265
- # <tt>:backtrace</tt>:: Write a backtrace of the last exceptions to the file '[app_name].log' in the
269
+ # <tt>:ontop</tt>:: When given, stay on top, i.e. do not daemonize the application
270
+ # <tt>:backtrace</tt>:: Write a backtrace of the last exceptions to the file '[app_name].log' in the
266
271
  # pid-file directory if the application exits due to an uncaught exception
267
272
  # <tt>:app_name</tt>:: The name of the application. This will be
268
273
  # used to contruct the name of the pid files
269
274
  # and log files. Defaults to the basename of
270
275
  # the script.
271
- # <tt>:dir_mode</tt>:: Either <tt>:script</tt> (the directory for writing files to
276
+ # <tt>:dir_mode</tt>:: Either <tt>:script</tt> (the directory for writing files to
272
277
  # given by <tt>:dir</tt> is interpreted relative
273
- # to the script location given by +script+, the default) or <tt>:normal</tt> (the directory given by
274
- # <tt>:dir</tt> is interpreted as a (absolute or relative) path) or <tt>:system</tt>
278
+ # to the script location given by +script+, the default) or <tt>:normal</tt> (the directory given by
279
+ # <tt>:dir</tt> is interpreted as a (absolute or relative) path) or <tt>:system</tt>
275
280
  # (<tt>/var/run</tt> is used as the file directory)
276
281
  #
277
282
  # <tt>:dir</tt>:: Used in combination with <tt>:dir_mode</tt> (description above)
278
283
  # <tt>:log_dir</tt>:: A specific directory to put the log files into (when not given, resort to the default
279
284
  # location as derived from the :dir_mode and :dir options
280
- # <tt>:log_output</tt>:: When given (i.e. set to true), redirect both STDOUT and STDERR to a logfile named '[app_name].output' in the pid-file directory
285
+ # <tt>:log_output</tt>:: When given (i.e. set to true), redirect both $stdout and $stdout to a logfile named '[app_name].output' in the pid-file directory
286
+ # <tt>:log_output_syslog</tt>:: When set to true, redirect output into SYSLOG instead of the file. This overrides log_output setting.
281
287
  # -----
282
- #
288
+ #
283
289
  # === Example:
284
290
  # options = {
285
291
  # :backtrace => true,
@@ -298,18 +304,22 @@ module Daemons
298
304
  #
299
305
  def daemonize(options = {})
300
306
  options[:script] ||= File.basename(__FILE__)
301
-
307
+
302
308
  @group ||= ApplicationGroup.new(options[:app_name] || options[:script], options)
303
-
309
+
304
310
  @group.new_application(:mode => :none).start
305
311
  end
306
312
  module_function :daemonize
307
-
313
+
308
314
  # Return the internal ApplicationGroup instance.
309
- def group; @group; end
315
+ def group
316
+ @group
317
+ end
310
318
  module_function :group
311
-
319
+
312
320
  # Return the internal Controller instance.
313
- def controller; @controller; end
321
+ def controller
322
+ @controller
323
+ end
314
324
  module_function :controller
315
- end
325
+ end
metadata CHANGED
@@ -1,56 +1,108 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: daemons
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.9
5
- prerelease:
4
+ version: 1.4.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Thomas Uehlinger
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-08-10 00:00:00.000000000 Z
13
- dependencies: []
14
- description: Daemons provides an easy way to wrap existing ruby scripts (for example
15
- a self-written server) to be run as a daemon and to be controlled by simple start/stop/restart
16
- commands. You can also call blocks as daemons and control them from the parent
17
- or just daemonize the current process. Besides this basic functionality, daemons
18
- offers many advanced features like exception backtracing and logging (in case your
19
- ruby script crashes) and monitoring and automatic restarting of your processes if
20
- they crash.
21
- email: th.uehlinger@gmx.ch
11
+ date: 2021-08-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '12.3'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 12.3.3
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '12.3'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 12.3.3
33
+ - !ruby/object:Gem::Dependency
34
+ name: rspec
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '3.1'
40
+ type: :development
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '3.1'
47
+ - !ruby/object:Gem::Dependency
48
+ name: simplecov
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: pry-byebug
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '3.0'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '3.0'
75
+ description: |2
76
+ Daemons provides an easy way to wrap existing ruby scripts (for example a
77
+ self-written server) to be run as a daemon and to be controlled by simple
78
+ start/stop/restart commands.
79
+
80
+ You can also call blocks as daemons and control them from the parent or just
81
+ daemonize the current process.
82
+
83
+ Besides this basic functionality, daemons offers many advanced features like
84
+ exception backtracing and logging (in case your ruby script crashes) and
85
+ monitoring and automatic restarting of your processes if they crash.
86
+ email: thomas.uehinger@gmail.com
22
87
  executables: []
23
88
  extensions: []
24
- extra_rdoc_files:
25
- - README
26
- - Releases
27
- - TODO
89
+ extra_rdoc_files: []
28
90
  files:
29
- - Rakefile
30
- - Releases
31
- - TODO
32
- - README
33
91
  - LICENSE
34
- - setup.rb
35
- - lib/daemons.rb
36
- - lib/daemons/application.rb
37
- - lib/daemons/application_group.rb
38
- - lib/daemons/change_privilege.rb
39
- - lib/daemons/cmdline.rb
40
- - lib/daemons/controller.rb
41
- - lib/daemons/daemonize.rb
42
- - lib/daemons/etc_extension.rb
43
- - lib/daemons/exceptions.rb
44
- - lib/daemons/monitor.rb
45
- - lib/daemons/pid.rb
46
- - lib/daemons/pidfile.rb
47
- - lib/daemons/pidmem.rb
92
+ - README.md
93
+ - Releases
94
+ - examples/call/call.rb
95
+ - examples/call/call_monitor.rb
96
+ - examples/daemonize/daemonize.rb
48
97
  - examples/run/ctrl_crash.rb
98
+ - examples/run/ctrl_custom_logfiles.rb
49
99
  - examples/run/ctrl_exec.rb
50
100
  - examples/run/ctrl_exit.rb
51
101
  - examples/run/ctrl_hanging.rb
52
102
  - examples/run/ctrl_keep_pid_files.rb
53
103
  - examples/run/ctrl_monitor.rb
104
+ - examples/run/ctrl_monitor_multiple.rb
105
+ - examples/run/ctrl_monitor_nocrash.rb
54
106
  - examples/run/ctrl_multiple.rb
55
107
  - examples/run/ctrl_normal.rb
56
108
  - examples/run/ctrl_ontop.rb
@@ -65,31 +117,44 @@ files:
65
117
  - examples/run/myserver_exiting.rb
66
118
  - examples/run/myserver_hanging.rb
67
119
  - examples/run/myserver_slowstop.rb
68
- - examples/call/call.rb
69
- - examples/call/call_monitor.rb
70
- - examples/daemonize/daemonize.rb
71
- homepage: http://daemons.rubyforge.org
72
- licenses: []
120
+ - lib/daemons.rb
121
+ - lib/daemons/application.rb
122
+ - lib/daemons/application_group.rb
123
+ - lib/daemons/change_privilege.rb
124
+ - lib/daemons/cmdline.rb
125
+ - lib/daemons/controller.rb
126
+ - lib/daemons/daemonize.rb
127
+ - lib/daemons/etc_extension.rb
128
+ - lib/daemons/exceptions.rb
129
+ - lib/daemons/monitor.rb
130
+ - lib/daemons/pid.rb
131
+ - lib/daemons/pidfile.rb
132
+ - lib/daemons/pidmem.rb
133
+ - lib/daemons/reporter.rb
134
+ - lib/daemons/syslogio.rb
135
+ - lib/daemons/version.rb
136
+ homepage: https://github.com/thuehlinger/daemons
137
+ licenses:
138
+ - MIT
139
+ metadata:
140
+ documentation_uri: http://www.rubydoc.info/gems/daemons
73
141
  post_install_message:
74
142
  rdoc_options: []
75
143
  require_paths:
76
144
  - lib
77
145
  required_ruby_version: !ruby/object:Gem::Requirement
78
- none: false
79
146
  requirements:
80
- - - ! '>='
147
+ - - ">="
81
148
  - !ruby/object:Gem::Version
82
149
  version: '0'
83
150
  required_rubygems_version: !ruby/object:Gem::Requirement
84
- none: false
85
151
  requirements:
86
- - - ! '>='
152
+ - - ">="
87
153
  - !ruby/object:Gem::Version
88
154
  version: '0'
89
155
  requirements: []
90
- rubyforge_project: daemons
91
- rubygems_version: 1.8.23
156
+ rubygems_version: 3.0.3
92
157
  signing_key:
93
- specification_version: 2
158
+ specification_version: 4
94
159
  summary: A toolkit to create and control daemons in different ways
95
160
  test_files: []