class Assistor::Assistant
Attributes
pid[R]
Public Class Methods
new(configuration, job)
click to toggle source
# File lib/assistor/assistant.rb, line 9 def initialize(configuration, job) @configuration = configuration @job = job end
Public Instance Methods
assist()
click to toggle source
# File lib/assistor/assistant.rb, line 22 def assist @pid = Process.fork do start process stop end detach rescue => e log_file.error e end
assists?()
click to toggle source
# File lib/assistor/assistant.rb, line 33 def assists? Process.kill(0, pid) rescue Errno::ESRCH false end
id()
click to toggle source
# File lib/assistor/assistant.rb, line 14 def id @id ||= [@configuration.id, @job.id].join ':' end
name()
click to toggle source
# File lib/assistor/assistant.rb, line 18 def name @name ||= [:assistor, id].join ':' end
Private Instance Methods
detach()
click to toggle source
# File lib/assistor/assistant.rb, line 98 def detach Process.detach pid end
handle_int_signal()
click to toggle source
# File lib/assistor/assistant.rb, line 81 def handle_int_signal Signal.trap('INT') do Thread.new { stop! }.join exit end end
handle_quit_signal()
click to toggle source
# File lib/assistor/assistant.rb, line 88 def handle_quit_signal Signal.trap('QUIT') do Thread.new { stop }.join end end
handle_signals()
click to toggle source
# File lib/assistor/assistant.rb, line 68 def handle_signals handle_term_signal handle_int_signal handle_quit_signal end
handle_term_signal()
click to toggle source
# File lib/assistor/assistant.rb, line 74 def handle_term_signal Signal.trap('TERM') do Thread.new { stop! }.join exit end end
pid_file()
click to toggle source
# File lib/assistor/assistant.rb, line 102 def pid_file @pid_file ||= PidFile.new File.join(Dir.tmpdir, format('%s.pid', Process.pid)) end
process()
click to toggle source
# File lib/assistor/assistant.rb, line 47 def process with_pid_file { @job.run } rescue => e log_file.error e @job.fail e end
set_process_title()
click to toggle source
# File lib/assistor/assistant.rb, line 94 def set_process_title $0 = name end
start()
click to toggle source
# File lib/assistor/assistant.rb, line 41 def start log_file.reopen handle_signals set_process_title end
stop()
click to toggle source
# File lib/assistor/assistant.rb, line 54 def stop return if pid_file.exist? exit!(0) rescue => e log_file.error e end
stop!()
click to toggle source
# File lib/assistor/assistant.rb, line 61 def stop! pid_file.delete exit!(1) rescue => e log_file.error e end
with_pid_file() { || ... }
click to toggle source
# File lib/assistor/assistant.rb, line 106 def with_pid_file pid_file.create Process.pid yield pid_file.delete end