class Shinq::CLI
Public Class Methods
new(args=ARGV)
click to toggle source
# File lib/shinq/cli.rb, line 15 def initialize(args=ARGV) setup_option(args) bootstrap initialize_shinq end
Public Instance Methods
bootstrap()
click to toggle source
# File lib/shinq/cli.rb, line 94 def bootstrap target = options.require Shinq.logger = Shinq::Logger.logger if File.directory?(target) require 'rails' require File.expand_path("#{target}/config/application.rb") require 'shinq/rails' require File.expand_path("#{target}/config/environment.rb") else require target end end
initialize_shinq()
click to toggle source
# File lib/shinq/cli.rb, line 109 def initialize_shinq Shinq::Client.fetch_column_names(table_name: Shinq.configuration.worker_name.pluralize) Shinq.configuration.worker_class # check if worker_class is constantizable before running ServerEngine end
options()
click to toggle source
# File lib/shinq/cli.rb, line 90 def options Shinq.configuration end
parse_options(args)
click to toggle source
# File lib/shinq/cli.rb, line 27 def parse_options(args) opts = {} parser = OptionParser.new do |opt| opt.on('-d', '--daemon', 'Daemonize process') do |v| opts[:daemonize] = v end opt.on('-w', '--worker VALUE', 'Name of worker class') do |v| opts[:worker_name] = v end opt.on('-p', '--process VALUE', 'Number of workers') do |v| opts[:process] = v.to_i end opt.on('--graceful-kill-timeout VALUE', 'Seconds to SIGQUIT workers even during performing jobs') do |v| opts[:graceful_kill_timeout] = v.to_i end opt.on('--queue-timeout VALUE', 'Waiting queue time(sec). use function of queue_wait(Q4M)') do |v| opts[:queue_timeout] = v.to_i end opt.on('--db-config VALUE', 'Specify database configuration file') do |v| raise OptionParseError, "#{v} does not exist" unless File.exist?(v) opts[:db_config] = YAML.load_file(v) end opt.on('--queue-database VALUE', 'Name of queue database') do |v| raise OptionParseError, "#{v}'s settings does not exist" unless opts[:db_config][v] opts[:queue_db] = v end opt.on('-r', '--require VALUE', 'Add require path') do |v| opts[:require] = v end opt.on('-l', '--max-lifecycle VALUE', 'Refork process when loopnumber is over specify number') do |v| opts[:lifecycle] = v.to_i end opt.on('-s', '--statistics VALUE', 'Display queue statistics interval time(sec)') do |v| opts[:statistics] = v.to_i end opt.on('--[no-]abort-on-error', 'Abort ') do |v| opts[:abort_on_error] = v end opt.on('--sleep-sec-on-error N', Integer, 'Allow worker to sleep(sec) after exception') do |v| opts[:sleep_sec_on_error] = v end opt.on('-v', '--version', 'Print version') do |v| puts "Shinq #{Shinq::VERSION}" exit(0) end end parser.parse!(args) opts end
run()
click to toggle source
# File lib/shinq/cli.rb, line 114 def run klass = !options.statistics.nil? && options.statistics ? Shinq::Statistics : Shinq::Launcher se = ServerEngine.create(nil, klass, { daemonize: options.daemonize, worker_type: 'process', pid_file: 'shinq.pid', workers: options.process, worker_graceful_kill_timeout: options.graceful_kill_timeout, logger: options.daemonize ? Shinq.logger : nil, }) se.run end
setup_option(args)
click to toggle source
# File lib/shinq/cli.rb, line 21 def setup_option(args) opts = parse_options(args) Shinq.configuration = Shinq::Configuration.new(opts) end