class Cumuli::Spawner::ForemanProc
Attributes
env[R]
log_dir[R]
pid[R]
Public Class Methods
new(env, log_dir)
click to toggle source
# File lib/cumuli/spawner/foreman_proc.rb, line 6 def initialize(env, log_dir) @env = env @log_dir = log_dir ensure_log_dir_and_file end
Public Instance Methods
command()
click to toggle source
# File lib/cumuli/spawner/foreman_proc.rb, line 17 def command "foreman start" end
ensure_log_dir_and_file()
click to toggle source
# File lib/cumuli/spawner/foreman_proc.rb, line 12 def ensure_log_dir_and_file FileUtils.mkdir_p(log_dir) FileUtils.touch(log_file) end
group_id()
click to toggle source
# File lib/cumuli/spawner/foreman_proc.rb, line 61 def group_id PS.new.root_pid end
kill_children()
click to toggle source
# File lib/cumuli/spawner/foreman_proc.rb, line 65 def kill_children Process.kill('INT', -group_id) # kills the forked group end
listen_for_signals()
click to toggle source
# File lib/cumuli/spawner/foreman_proc.rb, line 41 def listen_for_signals Cumuli::App::SIGNALS.each do |signal| trap(signal) do puts "#{self.class}: trapped signal #{signal} in #{Process.pid} ... stopping" stop end end end
log_file()
click to toggle source
# File lib/cumuli/spawner/foreman_proc.rb, line 21 def log_file "#{log_dir}/#{env}.log" end
start()
click to toggle source
# File lib/cumuli/spawner/foreman_proc.rb, line 25 def start @pid = fork do spawn( { 'HEROKU_ENV' => env, 'RAILS_ENV' => env }, command, { out: $stdout.reopen(log_file), pgroup: true, # start a new process group } ) end end
started?()
click to toggle source
# File lib/cumuli/spawner/foreman_proc.rb, line 50 def started? !!pid end
stop()
click to toggle source
# File lib/cumuli/spawner/foreman_proc.rb, line 54 def stop return if @killed_it kill_children @killed_it = true @pid = nil end