Sha256: 9471897965603ff0409ae04aece6acea223bb663c1180e299560046ab67309d6
Contents?: true
Size: 1.14 KB
Versions: 3
Compression:
Stored size: 1.14 KB
Contents
# frozen_string_literal: true module Nonnative class Process < Runner def initialize(service) super service @timeout = Nonnative::Timeout.new(service.timeout) end def start unless process_exists? proxy.start @pid = process_spawn wait_start end pid end def stop if process_exists? process_kill proxy.stop wait_stop end pid end protected def wait_stop timeout.perform do ::Process.waitpid2(pid) end end private attr_reader :pid, :timeout def process_kill signal = Signal.list[service.signal || 'INT'] || Signal.list['INT'] ::Process.kill(signal, pid) end 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 def process_exists? return false if pid.nil? signal = Signal.list['EXIT'] ::Process.kill(signal, pid) true rescue Errno::ESRCH false end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
nonnative-1.51.1 | lib/nonnative/process.rb |
nonnative-1.48.0 | lib/nonnative/process.rb |
nonnative-1.47.0 | lib/nonnative/process.rb |