class SidekiqUniqueJobs::Cli
@author Mikael Henriksson <mikael@mhenrixon.com>
Command line interface for unique jobs
def self.banner(command, _namespace = nil, _subcommand = false) # rubocop:disable Style/OptionalBooleanParameter
rubocop:disable Style/OptionalBooleanParameter
:nodoc:
def self.banner(command, _namespace = nil, _subcommand = false) # rubocop:disable Style/OptionalBooleanParameter "jobs #{@package_name} #{command.usage}" # rubocop:disable ThreadSafety/InstanceVariableInClassMethod end
def console
def console say "Use `list '*', 1000 to display the first 1000 unique digests matching '*'" say "Use `del '*', 1000, true (default) to see how many digests would be deleted for the pattern '*'" say "Use `del '*', 1000, false to delete the first 1000 digests matching '*'" # Object.include SidekiqUniqueJobs::Api console_class.start end
def console_class
def console_class require "pry" Pry rescue NameError, LoadError require "irb" IRB end
def del(pattern)
def del(pattern) max_count = options[:count] if options[:dry_run] result = digests.entries(pattern: pattern, count: max_count) say "Would delete #{result.size} digests matching '#{pattern}'" else deleted_count = digests.delete_by_pattern(pattern, count: max_count) say "Deleted #{deleted_count} digests matching '#{pattern}'" end end
def digests
def digests @digests ||= SidekiqUniqueJobs::Digests.new end
def list(pattern = "*")
def list(pattern = "*") entries = digests.entries(pattern: pattern, count: options[:count]) say "Found #{entries.size} digests matching '#{pattern}':" print_in_columns(entries.sort) if entries.any? end