Class: JobBoard::QueueList

Inherits:
Object
  • Object
show all
Defined in:
app/models/job_board/queue_list.rb

Overview

Partitions queues into active and inactive based on when each queue last had a job enqueued. A queue is inactive when its newest job is older than the activity window; paused queues always count as active, since a pause is deliberate state someone needs to see. Without a window, every queue is active.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(queues, last_enqueued_at:, window: nil) ⇒ QueueList

Returns a new instance of QueueList.



16
17
18
19
20
# File 'app/models/job_board/queue_list.rb', line 16

def initialize(queues, last_enqueued_at:, window: nil)
  @last_enqueued_at = last_enqueued_at
  @window = window
  @active, @inactive = partition(queues)
end

Instance Attribute Details

#activeObject (readonly)

Returns the value of attribute active.



8
9
10
# File 'app/models/job_board/queue_list.rb', line 8

def active
  @active
end

#inactiveObject (readonly)

Returns the value of attribute inactive.



8
9
10
# File 'app/models/job_board/queue_list.rb', line 8

def inactive
  @inactive
end

#last_enqueued_atObject (readonly)

Returns the value of attribute last_enqueued_at.



8
9
10
# File 'app/models/job_board/queue_list.rb', line 8

def last_enqueued_at
  @last_enqueued_at
end

#windowObject (readonly)

Returns the value of attribute window.



8
9
10
# File 'app/models/job_board/queue_list.rb', line 8

def window
  @window
end

Class Method Details

.build(window: JobBoard.config.queue_activity_window) ⇒ Object



10
11
12
13
14
# File 'app/models/job_board/queue_list.rb', line 10

def self.build(window: JobBoard.config.queue_activity_window)
  new(LatencySla.sort(SolidQueue::Queue.all),
    last_enqueued_at: SolidQueue::Job.group(:queue_name).maximum(:created_at),
    window: window)
end