class Delayed::Master

Constants

VERSION

Attributes

config[R]
logger[R]
workers[R]

Public Class Methods

new(argv) click to toggle source
# File lib/delayed/master.rb, line 14
def initialize(argv)
  @config = Command.new(argv).config
  @logger = setup_logger(@config.log_file, @config.log_level)
  @workers = []

  @signaler = Signaler.new(self)
  @monitoring = Monitoring.new(self)
end

Public Instance Methods

prepared?() click to toggle source
# File lib/delayed/master.rb, line 38
def prepared?
  @prepared
end
quit() click to toggle source
# File lib/delayed/master.rb, line 42
def quit
  @signaler.dispatch(:KILL)
  @stop = true
end
reopen_files() click to toggle source
# File lib/delayed/master.rb, line 56
def reopen_files
  @signaler.dispatch(:USR1)
  @logger.info "reopening files..."
  Util::FileReopener.reopen
  @logger.info "reopened"
end
restart() click to toggle source
# File lib/delayed/master.rb, line 63
def restart
  @signaler.dispatch(:USR2)
  @logger.info "restarting master..."
  exec(*([$0] + ARGV))
end
run() click to toggle source
# File lib/delayed/master.rb, line 23
def run
  print_config
  daemonize if @config.daemon

  @logger.info "started master #{Process.pid}".tap { |msg| puts msg }

  handle_pid_file do
    @signaler.register
    @prepared = true
    @monitoring.monitor_while { stop? }
  end

  @logger.info "shut down master"
end
stop() click to toggle source
# File lib/delayed/master.rb, line 47
def stop
  @signaler.dispatch(:TERM)
  @stop = true
end
stop?() click to toggle source
# File lib/delayed/master.rb, line 52
def stop?
  @stop == true
end

Private Instance Methods

create_pid_file() click to toggle source
# File lib/delayed/master.rb, line 88
def create_pid_file
  FileUtils.mkdir_p(File.dirname(@config.pid_file))
  File.write(@config.pid_file, Process.pid)
end
daemonize() click to toggle source
# File lib/delayed/master.rb, line 78
def daemonize
  Process.daemon(true)
end
handle_pid_file() { || ... } click to toggle source
# File lib/delayed/master.rb, line 82
def handle_pid_file
  create_pid_file
  yield
  remove_pid_file
end
print_config() click to toggle source
remove_pid_file() click to toggle source
# File lib/delayed/master.rb, line 93
def remove_pid_file
  File.delete(@config.pid_file) if File.exist?(@config.pid_file)
end
setup_logger(log_file, log_level) click to toggle source
# File lib/delayed/master.rb, line 71
def setup_logger(log_file, log_level)
  FileUtils.mkdir_p(File.dirname(log_file)) if log_file.is_a?(String)
  logger = Logger.new(log_file)
  logger.level = log_level
  logger
end