Class: SidekiqClientCLI

Inherits:
Object
  • Object
show all
Defined in:
lib/sidekiq_client_cli.rb,
lib/sidekiq_client_cli/version.rb

Constant Summary collapse

COMMANDS =
%w{push}
DEFAULT_CONFIG_PATH =
"config/initializers/sidekiq.rb"
VERSION =
"0.1.4"

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#settingsObject

Returns the value of attribute settings.



9
10
11
# File 'lib/sidekiq_client_cli.rb', line 9

def settings
  @settings
end

Class Method Details

.cast_retry_option(retry_option) ⇒ Object



27
28
29
30
31
# File 'lib/sidekiq_client_cli.rb', line 27

def self.cast_retry_option(retry_option)
  return true if !!retry_option.match(/^(true|t|yes|y)$/i)
  return false if !!retry_option.match(/^(false|f|no|n|0)$/i)
  return retry_option.to_i if !!retry_option.match(/^\d+$/)
end

Instance Method Details

#parseObject



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/sidekiq_client_cli.rb', line 11

def parse
  @settings = CLI.new do
    option :config_path, :short => :c, :default => DEFAULT_CONFIG_PATH, :description => "Sidekiq client config file path"
    option :queue, :short => :q, :description => "Queue to place job on"
    option :retry, :short => :r, :cast => lambda { |r| SidekiqClientCLI.cast_retry_option(r) }, :description => "Retry option for job"
    argument :command, :description => "'push' to push a job to the queue"
    arguments :command_args, :required => false, :description => "command arguments"
  end.parse! do |settings|
    fail "Invalid command '#{settings.command}'. Available commands: #{COMMANDS.join(',').chomp(',')}" unless COMMANDS.include? settings.command

    if settings.command == "push" && settings.command_args.empty?
      fail "No Worker Classes to push"
    end
  end
end

#pushObject



44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/sidekiq_client_cli.rb', line 44

def push
  settings.command_args.each do |arg|
    begin
      jid = Sidekiq::Client.push({ 'class' => arg,
                                   'queue' => settings.queue,
                                   'args'  => [],
                                   'retry' => settings.retry })
      p "Posted #{arg} to queue '#{settings.queue}', Job ID : #{jid}, Retry : #{settings.retry}"
    rescue StandardError => ex
      p "Failed to push to queue : #{ex.message}"
    end
  end
end

#runObject



33
34
35
36
37
38
39
40
41
42
# File 'lib/sidekiq_client_cli.rb', line 33

def run
  # load the config file
  load settings.config_path if File.exists?(settings.config_path)

  # set queue or retry if they are not given
  settings.queue ||= Sidekiq.default_worker_options['queue']
  settings.retry ||= Sidekiq.default_worker_options['retry']

  self.send settings.command.to_sym
end