lib/good_job/daemon.rb in good_job-1.9.3 vs lib/good_job/daemon.rb in good_job-1.9.4
- old
+ new
@@ -11,38 +11,44 @@
def initialize(pidfile:)
@pidfile = pidfile
end
# Daemonizes the current process and writes out a pidfile.
+ # @return [void]
def daemonize
check_pid
Process.daemon
write_pid
end
private
+ # @return [void]
def write_pid
File.open(pidfile, ::File::CREAT | ::File::EXCL | ::File::WRONLY) { |f| f.write(Process.pid.to_s) }
at_exit { File.delete(pidfile) if File.exist?(pidfile) }
rescue Errno::EEXIST
check_pid
retry
end
+ # @return [void]
def delete_pid
File.delete(pidfile) if File.exist?(pidfile)
end
+ # @return [void]
def check_pid
case pid_status(pidfile)
when :running, :not_owned
abort "A server is already running. Check #{pidfile}"
when :dead
File.delete(pidfile)
end
end
+ # @param pidfile [Pathname, String]
+ # @return [Symbol]
def pid_status(pidfile)
return :exited unless File.exist?(pidfile)
pid = ::File.read(pidfile).to_i
return :dead if pid.zero?