Module: Crabfarm::Utils::Processes

Defined in:
lib/crabfarm/utils/processes.rb

Class Method Summary collapse

Class Method Details

.start_logged_process(_name, _cmd, _logger, _env = {}) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/crabfarm/utils/processes.rb', line 9

def self.start_logged_process(_name, _cmd, _logger, _env={})
  ro, wo = IO.pipe
  re, we = IO.pipe

  proc = ChildProcess.build(*_cmd)
  proc.environment.merge! _env
  proc.io.stdout = wo
  proc.io.stderr = we
  proc.start

  wo.close
  we.close

  Thread.new { ro.each_line { |l| _logger.info "[#{_name.upcase}] #{l}" } }
  Thread.new { re.each_line { |l| _logger.warn "[#{_name.upcase}] #{l}" } }

  proc
end