class Arsenicum::Main

Attributes

queues[R]

Public Instance Methods

run(config) click to toggle source
# File lib/arsenicum/main.rb, line 5
def run(config)
  $0 = 'arsenicum[main]'

  if config.daemon
    Process.daemon  true, true

    File.open(config.pidfile_path, 'w:UTF-8') do |f|
      f.puts $$
    end
  end

  Dir.chdir     config.working_directory

  configure_io  config
  configure_log config

  before_boot(config)

  @queues = config.queue_configurations.map{|qc|qc.build}
  threads = @queues.map(&:start_async)
  begin
    sleep 10
    trap_signal

    threads.each(&:join)
  rescue Interrupt
  end
end

Private Instance Methods

before_boot(config) click to toggle source
# File lib/arsenicum/main.rb, line 47
def before_boot(config);end
configure_io(config) click to toggle source
# File lib/arsenicum/main.rb, line 35
def configure_io(config)
  $stdout = File.open(config.stdout_path, 'a:UTF-8') if config.stdout_path

  if config.stderr_path
    if config.stdout_path && config.stdout_path == config.stderr_path
      $stderr = $stdout
    else
      $stderr = File.open(config.stderr_path, 'a:UTF-8')
    end
  end
end
configure_log(config) click to toggle source
# File lib/arsenicum/main.rb, line 49
def configure_log(config)
  Arsenicum::Logger.set_logger config.logger_config.build
end
trap_signal() click to toggle source
# File lib/arsenicum/main.rb, line 53
    def trap_signal
      [:TERM, :INT,].each do |sig|
        Signal.trap sig do
puts "signal received"
          queues.each(&:stop)
          exit 1
        end
      end
    end