class MultiDaemons::Controller

To control daemons

Attributes

daemons[RW]
options[RW]

Public Class Methods

new(daemons, options = {}) click to toggle source
# File lib/multi_daemons/controller.rb, line 6
def initialize(daemons, options = {})
  @daemons = daemons
  @options = options
  unless ARGV[1].to_s.empty?
    @daemons = filter_daemons(daemons)
    msg = "Daemon [#{ARGV[1]}] not exist."\
          " Available ones are #{daemons.map(&:name)}"
    Log.log msg if @daemons.empty?
  end
end

Public Instance Methods

start() click to toggle source
# File lib/multi_daemons/controller.rb, line 17
def start
  daemons.each(&:start)
end
status() click to toggle source
# File lib/multi_daemons/controller.rb, line 34
def status
  daemon_attrs = {}
  daemons.each do |daemon|
    daemon.pids.each { |pid| daemon_attrs["#{daemon.name}-#{pid}"] = pid }
  end
  daemon_attrs.each do |pid_name, pid|
    puts "#{pid_name}: #{print_status(Pid.running?(pid))}"
  end
end
stop() click to toggle source
# File lib/multi_daemons/controller.rb, line 21
def stop
  pids = []
  pid_files = []
  daemons.each do |daemon|
    daemon.multiple = true
    daemon.stop
    pids << daemon.pids
    pid_files << daemon.pid_file
  end
  Pid.force_kill(pids.flatten, force_kill_timeout)
  PidStore.cleanup(pid_files)
end

Private Instance Methods

filter_daemons(daemons) click to toggle source
# File lib/multi_daemons/controller.rb, line 46
def filter_daemons(daemons)
  daemon_names = ARGV[1].split(',')
  daemons.select { |v| daemon_names.include?(v.name) }
end
force_kill_timeout() click to toggle source
# File lib/multi_daemons/controller.rb, line 63
def force_kill_timeout
  options[:force_kill_timeout] || 30
end
green(msg) click to toggle source
# File lib/multi_daemons/controller.rb, line 55
def green(msg)
  "\e[32m#{msg}\e[0m"
end
print_status(status) click to toggle source
red(msg) click to toggle source
# File lib/multi_daemons/controller.rb, line 59
def red(msg)
  "\e[31m#{msg}\e[0m"
end