class Sidejobs::Daemon
Public Instance Methods
pid()
click to toggle source
# File lib/sidejobs/daemon.rb, line 38 def pid File.read(pid_path).to_i rescue nil end
restart()
click to toggle source
# File lib/sidejobs/daemon.rb, line 30 def restart if running? Process.kill :HUP, pid else start end end
running?()
click to toggle source
# File lib/sidejobs/daemon.rb, line 5 def running? if pid begin Process.kill 0, pid true rescue Errno::ESRCH false end else false end end
start()
click to toggle source
# File lib/sidejobs/daemon.rb, line 18 def start unless running? spawn end end
stop()
click to toggle source
# File lib/sidejobs/daemon.rb, line 24 def stop if running? Process.kill :TERM, pid end end
Private Instance Methods
daemonize()
click to toggle source
# File lib/sidejobs/daemon.rb, line 51 def daemonize Process.daemon end
delete_pid()
click to toggle source
# File lib/sidejobs/daemon.rb, line 64 def delete_pid FileUtils.rm_rf pid_path end
handle_signal()
click to toggle source
# File lib/sidejobs/daemon.rb, line 81 def handle_signal case @signal when :stop delete_pid when :restart @signal = nil spawn end end
pid_path()
click to toggle source
# File lib/sidejobs/daemon.rb, line 73 def pid_path Rails.root.join 'tmp/sidejobs.pid' end
process()
click to toggle source
# File lib/sidejobs/daemon.rb, line 95 def process logger.info "Started #{pid} at #{Time.zone.now}" until signal_received? do processor.process sleep Sidejobs.configuration.sleep_delay end logger.info "Stopped #{pid} at #{Time.zone.now}" handle_signal end
processor()
click to toggle source
# File lib/sidejobs/daemon.rb, line 77 def processor @processor ||= Processor.new end
signal_received?()
click to toggle source
# File lib/sidejobs/daemon.rb, line 91 def signal_received? @signal.present? end
spawn()
click to toggle source
# File lib/sidejobs/daemon.rb, line 44 def spawn daemonize write_pid trap_signals process end
trap_signals()
click to toggle source
# File lib/sidejobs/daemon.rb, line 55 def trap_signals trap :TERM do @signal = :stop end trap :HUP do @signal = :restart end end
write_pid()
click to toggle source
# File lib/sidejobs/daemon.rb, line 68 def write_pid FileUtils.mkdir_p pid_path.dirname File.write pid_path, Process.pid end