class Runnerbean::ProcessGroup

Attributes

name[W]
processes[R]

Public Class Methods

new(*processes) click to toggle source
# File lib/runnerbean/process_group.rb, line 6
def initialize(*processes)
  @processes = processes
end

Public Instance Methods

ensure_started!() click to toggle source
# File lib/runnerbean/process_group.rb, line 22
def ensure_started!
  kill_if_running!
  start!
end
kill!() click to toggle source
# File lib/runnerbean/process_group.rb, line 10
def kill!
  generic_command(:kill)
end
name() click to toggle source
# File lib/runnerbean/process_group.rb, line 18
def name
  @name ||= default_process_group_name
end
start!() click to toggle source
# File lib/runnerbean/process_group.rb, line 14
def start!
  generic_command(:start)
end

Private Instance Methods

default_process_group_name() click to toggle source
# File lib/runnerbean/process_group.rb, line 29
def default_process_group_name
  return processes.map(&:name).join('_and_')
rescue
  'default_process_group_name'
end
execute(*commands) click to toggle source
# File lib/runnerbean/process_group.rb, line 60
def execute(*commands)
  commands.map { |k| Kernel.system(k) } unless commands.size == 0
end
find_commands(command) click to toggle source
# File lib/runnerbean/process_group.rb, line 55
def find_commands(command)
  command_getter = "#{command}_command".to_sym
  processes.map(&command_getter).compact
end
find_sleep_times(command) click to toggle source
# File lib/runnerbean/process_group.rb, line 64
def find_sleep_times(command)
  sleep_getter = "sleep_after_#{command}".to_sym
  processes.map(&sleep_getter).compact
end
generic_command(command) click to toggle source
# File lib/runnerbean/process_group.rb, line 35
def generic_command(command)
  set_group_name_on_processes

  commands = find_commands(command)
  execute(*commands)

  sleep_times = find_sleep_times(command)
  sleep_for(*sleep_times)
end
kill_if_running!() click to toggle source
# File lib/runnerbean/process_group.rb, line 49
def kill_if_running!
  running_processes = processes.select(&:running?)
  kill_group = self.class.new(*running_processes)
  kill_group.kill!
end
set_group_name_on_processes() click to toggle source
# File lib/runnerbean/process_group.rb, line 45
def set_group_name_on_processes
  processes.each { |p| p.group_name = name }
end
sleep_for(*sleep_times) click to toggle source
# File lib/runnerbean/process_group.rb, line 69
def sleep_for(*sleep_times)
  Kernel.sleep(sleep_times.max) unless sleep_times.size == 0
end