Class: SidekiqErr::View

Inherits:
Object
  • Object
show all
Defined in:
lib/sidekiq-err/view.rb

Defined Under Namespace

Classes: InvalidSection, QUEUE_STRUCT

Constant Summary collapse

COL_PAD =
2

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(section) ⇒ View

Returns a new instance of View.



13
14
15
# File 'lib/sidekiq-err/view.rb', line 13

def initialize(section)
  @section = section
end

Instance Attribute Details

#sectionObject (readonly)

Returns the value of attribute section.



7
8
9
# File 'lib/sidekiq-err/view.rb', line 7

def section
  @section
end

Class Method Details

.valid_sectionsObject



9
10
11
# File 'lib/sidekiq-err/view.rb', line 9

def self.valid_sections
  @valid_sections ||= %w[all version overview processes queues].freeze
end

Instance Method Details

#allObject



27
28
29
30
31
32
33
34
35
# File 'lib/sidekiq-err/view.rb', line 27

def all
  version
  puts
  overview
  puts
  processes
  puts
  queues
end

#displayObject



17
18
19
20
21
22
23
24
25
# File 'lib/sidekiq-err/view.rb', line 17

def display
  if invalid_section?(section)
    msg = "Invalid section for status check: '#{section}'"
    msg += "\nTry one of these: #{self.class.valid_sections.join(', ')}"
    raise(InvalidSection, msg)
  end

  send(section)
end

#overviewObject



42
43
44
45
46
47
48
49
50
51
# File 'lib/sidekiq-err/view.rb', line 42

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



53
54
55
56
57
58
59
60
61
62
# File 'lib/sidekiq-err/view.rb', line 53

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



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/sidekiq-err/view.rb', line 65

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



37
38
39
40
# File 'lib/sidekiq-err/view.rb', line 37

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