Class: JobBoard::QueueList
- Inherits:
-
Object
- Object
- JobBoard::QueueList
- 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
-
#active ⇒ Object
readonly
Returns the value of attribute active.
-
#inactive ⇒ Object
readonly
Returns the value of attribute inactive.
-
#last_enqueued_at ⇒ Object
readonly
Returns the value of attribute last_enqueued_at.
-
#window ⇒ Object
readonly
Returns the value of attribute window.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(queues, last_enqueued_at:, window: nil) ⇒ QueueList
constructor
A new instance of QueueList.
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
#active ⇒ Object (readonly)
Returns the value of attribute active.
8 9 10 |
# File 'app/models/job_board/queue_list.rb', line 8 def active @active end |
#inactive ⇒ Object (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_at ⇒ Object (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 |
#window ⇒ Object (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 |