Class: Sidekiq::Ctl::Status

Inherits:
Object
  • Object
show all
Defined in:
lib/sidekiq/ctl.rb

Defined Under Namespace

Classes: QUEUE_STRUCT

Constant Summary collapse

VALID_SECTIONS =
%w[all version overview processes queues]
COL_PAD =
2

Instance Method Summary collapse

Instance Method Details

#allObject



110
111
112
113
114
115
116
117
118
# File 'lib/sidekiq/ctl.rb', line 110

def all
  version
  puts
  overview
  puts
  processes
  puts
  queues
end

#display(section = nil) ⇒ Object



98
99
100
101
102
103
104
105
106
107
108
# File 'lib/sidekiq/ctl.rb', line 98

def display(section = nil)
  section ||= 'all'
  unless VALID_SECTIONS.include? section
    puts "I don't know how to check the status of '#{section}'!"
    puts "Try one of these: #{VALID_SECTIONS.join(', ')}"
    return
  end
  send(section)
rescue StandardError => e
  puts "Couldn't get status: #{e}"
end

#overviewObject



125
126
127
128
129
130
131
132
133
134
# File 'lib/sidekiq/ctl.rb', line 125

def overview
  puts '---- Overview ----'
  puts "  Processed: #{delimit stats.processed}"
  puts "     Failed: #{delimit stats.failed}"
  puts "       Busy: #{delimit stats.workers_size}"
  puts "   Enqueued: #{delimit stats.enqueued}"
  puts "    Retries: #{delimit stats.retry_size}"
  puts "  Scheduled: #{delimit stats.scheduled_size}"
  puts "       Dead: #{delimit stats.dead_size}"
end

#processesObject



136
137
138
139
140
141
142
143
144
145
# File 'lib/sidekiq/ctl.rb', line 136

def processes
  puts "---- Processes (#{process_set.size}) ----"
  process_set.each_with_index do |process, index|
    puts "#{process['identity']} #{tags_for(process)}"
    puts "  Started: #{Time.at(process['started_at'])} (#{time_ago(process['started_at'])})"
    puts "  Threads: #{process['concurrency']} (#{process['busy']} busy)"
    puts "   Queues: #{split_multiline(process['queues'].sort, pad: 11)}"
    puts '' unless (index+1) == process_set.size
  end
end

#queuesObject



148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
# File 'lib/sidekiq/ctl.rb', line 148

def queues
  puts "---- Queues (#{queue_data.size}) ----"
  columns = {
    name: [:ljust, (['name'] + queue_data.map(&:name)).map(&:length).max + COL_PAD],
    size: [:rjust, (['size'] + queue_data.map(&:size)).map(&:length).max + COL_PAD],
    latency: [:rjust, (['latency'] + queue_data.map(&:latency)).map(&:length).max + COL_PAD]
  }
  columns.each { |col, (dir, width)| print col.to_s.upcase.public_send(dir, width) }
  puts
  queue_data.each do |q|
    columns.each do |col, (dir, width)|
      print q.send(col).public_send(dir, width)
    end
    puts
  end
end

#versionObject



120
121
122
123
# File 'lib/sidekiq/ctl.rb', line 120

def version
  puts "Sidekiq #{Sidekiq::VERSION}"
  puts Time.now
end