class Nonnative::Process
Attributes
pid[R]
timeout[R]
Public Class Methods
new(service)
click to toggle source
Calls superclass method
# File lib/nonnative/process.rb, line 5 def initialize(service) super service @timeout = Nonnative::Timeout.new(service.timeout) end
Public Instance Methods
start()
click to toggle source
# File lib/nonnative/process.rb, line 11 def start unless process_exists? proxy.start @pid = process_spawn wait_start end pid end
stop()
click to toggle source
# File lib/nonnative/process.rb, line 21 def stop if process_exists? process_kill proxy.stop wait_stop end pid end
Protected Instance Methods
wait_stop()
click to toggle source
# File lib/nonnative/process.rb, line 33 def wait_stop timeout.perform do ::Process.waitpid2(pid) end end
Private Instance Methods
process_exists?()
click to toggle source
# File lib/nonnative/process.rb, line 55 def process_exists? return false if pid.nil? signal = Signal.list['EXIT'] ::Process.kill(signal, pid) true rescue Errno::ESRCH false end
process_kill()
click to toggle source
# File lib/nonnative/process.rb, line 43 def process_kill signal = Signal.list[service.signal || 'INT'] || Signal.list['INT'] ::Process.kill(signal, pid) end
process_spawn()
click to toggle source
# File lib/nonnative/process.rb, line 48 def process_spawn environment = service.environment || {} environment = environment.transform_keys(&:to_s).transform_values(&:to_s) spawn(environment, service.command, %i[out err] => [service.log, 'a']) end