Class: SolidQueue::Queue

Inherits:
Object
  • Object
show all
Defined in:
lib/solid_queue_mongoid/models/queue.rb,
lib/solid_queue_mongoid/models/classes.rb

Overview

plain Ruby class — not Mongoid-backed

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name) ⇒ Queue

Returns a new instance of Queue.



20
21
22
# File 'lib/solid_queue_mongoid/models/queue.rb', line 20

def initialize(name)
  @name = name
end

Instance Attribute Details

#name ⇒ Object

Returns the value of attribute name.



8
9
10
# File 'lib/solid_queue_mongoid/models/queue.rb', line 8

def name
  @name
end

Class Method Details

.all ⇒ Object



11
12
13
# File 'lib/solid_queue_mongoid/models/queue.rb', line 11

def all
  Job.distinct(:queue_name).map { |queue_name| new(queue_name) }
end

.find_by_name(name) ⇒ Object



15
16
17
# File 'lib/solid_queue_mongoid/models/queue.rb', line 15

def find_by_name(name)
  new(name)
end

Instance Method Details

#==(other) ⇒ Object Also known as: eql?



56
57
58
# File 'lib/solid_queue_mongoid/models/queue.rb', line 56

def ==(other)
  name == (other.respond_to?(:name) ? other.name : other)
end

#clear ⇒ Object



36
37
38
# File 'lib/solid_queue_mongoid/models/queue.rb', line 36

def clear
  ReadyExecution.queued_as(name).discard_all_in_batches
end

#hash ⇒ Object



61
62
63
# File 'lib/solid_queue_mongoid/models/queue.rb', line 61

def hash
  name.hash
end

#human_latency ⇒ Object



52
53
54
# File 'lib/solid_queue_mongoid/models/queue.rb', line 52

def human_latency
  ActiveSupport::Duration.build(latency).inspect
end

#latency ⇒ Object



44
45
46
47
48
49
50
# File 'lib/solid_queue_mongoid/models/queue.rb', line 44

def latency
  @latency ||= begin
    now = Time.current
    oldest_enqueued_at = ReadyExecution.queued_as(name).min(:created_at) || now
    (now - oldest_enqueued_at).to_i
  end
end

#pause ⇒ Object



28
29
30
# File 'lib/solid_queue_mongoid/models/queue.rb', line 28

def pause
  Pause.pause_queue(name)
end

#paused? ⇒ Boolean

Returns:

  • (Boolean)


24
25
26
# File 'lib/solid_queue_mongoid/models/queue.rb', line 24

def paused?
  Pause.where(queue_name: name).exists?
end

#resume ⇒ Object



32
33
34
# File 'lib/solid_queue_mongoid/models/queue.rb', line 32

def resume
  Pause.resume_queue(name)
end

#size ⇒ Object



40
41
42
# File 'lib/solid_queue_mongoid/models/queue.rb', line 40

def size
  @size ||= ReadyExecution.queued_as(name).count
end