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