class Workerholic::CLI

Attributes

logger[R]
options[R]

Public Class Methods

new() click to toggle source
# File lib/workerholic/cli.rb, line 13
def initialize
  @logger = LogManager.new
end

Public Instance Methods

run() click to toggle source
# File lib/workerholic/cli.rb, line 17
def run
  parse_options

  Starter.options = options
  Starter.start
end

Private Instance Methods

parse_options() click to toggle source
# File lib/workerholic/cli.rb, line 26
def parse_options
  @options = {}

  OptionParser.new do |opts|
    opts.banner = 'Usage: workerholic [options]'

    opts.on '-a', '--auto-balance', 'auto-balance workers based on number of jobs in each queue' do
      options[:auto_balance] = true
    end

    opts.on '-w', '--workers INT', 'number of concurrent workers' do |count|
      count = count.to_i

      if count < 1
        logger.error('Invalid number of workers. Please specify a valid number.')
        exit
      else
        options[:workers] = count.to_i
      end
    end

    opts.on '-r', '--require PATH', 'file to be required to load your application' do |file|
      options[:require] = file
    end

    opts.on '-h', '--help', 'show help' do
      logger.info(opts)
      exit
    end

    opts.on '-p', '--processes INT', 'number of processes to start in parallel' do |count|
      count = count.to_i

      if count < 1
        logger.error('Invalid number of processes. Please specify a valid number.')
        exit
      else
        options[:processes] = count.to_i
      end
    end

    opts.on '-c', '--connections INT', 'number of connections for redis connection pool' do |count|
      count = count.to_i

      if count < 1
        logger.error('Invalid number of redis connections. Please specify a valid number.')
        exit
      else
        options[:redis_connections] = count.to_i
      end
    end
  end.parse!
end