Sha256: 7f9a7525f2bd230a923c7b2852518546437c28bb72095836a4efde525490b616
Contents?: true
Size: 1.67 KB
Versions: 2
Compression:
Stored size: 1.67 KB
Contents
module Capricorn module Daemon class Base def self.daemonize(&block) Capricorn::Daemon::Controller.start(self,&block) end end module PidFile def self.store(pid) File.open(self.pid_file, 'w') {|f| f << pid} end def self.recall IO.read(self.pid_file).to_i rescue nil end def self.destroy FileUtils.rm(self.pid_file) if self.exist? end def self.pid_file Capricorn.system.path("Server.pid") end def self.exist? File.file?(self.pid_file) end end module Controller def self.start(daemon, &block) fork do Process.setsid exit if fork if PidFile.exist? puts "Pid file #{PidFile.pid_file} already exists. Not starting." exit 1 end Capricorn::Daemon::PidFile.store(Process.pid) Dir.chdir Capricorn.system.root File.umask 0000 Capricorn::ExceptionHandler.redirect_std trap("TERM") { daemon.stop; exit } at_exit { Capricorn::Daemon::PidFile.destroy if $master } at_exit(&block) if block daemon.start end puts "Daemon started." end def self.stop if !Capricorn::Daemon::PidFile.exist? puts "Pid file not found. Is the daemon started?" exit end pid = Capricorn::Daemon::PidFile.recall pid && Process.kill("TERM", pid) rescue Errno::ESRCH puts "Pid file found, but process was not running. The daemon may have died." end end end end
Version data entries
2 entries across 2 versions & 2 rubygems
Version | Path |
---|---|
simonmenke-capricorn-0.2.00 | lib/capricorn/daemon.rb |
capricorn-0.2.00 | lib/capricorn/daemon.rb |