Class: SolidQueue::Queue

Inherits:
Object
  • Object
show all
Defined in:
app/models/solid_queue/queue.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name) ⇒ Queue

Returns a new instance of Queue.



17
18
19
# File 'app/models/solid_queue/queue.rb', line 17

def initialize(name)
  @name = name
end

Instance Attribute Details

#nameObject

Returns the value of attribute name.



5
6
7
# File 'app/models/solid_queue/queue.rb', line 5

def name
  @name
end

Class Method Details

.allObject



8
9
10
# File 'app/models/solid_queue/queue.rb', line 8

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

.find_by_name(name) ⇒ Object



12
13
14
# File 'app/models/solid_queue/queue.rb', line 12

def find_by_name(name)
  new(name)
end

Instance Method Details

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



54
55
56
# File 'app/models/solid_queue/queue.rb', line 54

def ==(queue)
  name == queue.name
end

#clearObject



33
34
35
# File 'app/models/solid_queue/queue.rb', line 33

def clear
  ReadyExecution.queued_as(name).discard_all_in_batches
end

#hashObject



59
60
61
# File 'app/models/solid_queue/queue.rb', line 59

def hash
  name.hash
end

#human_latencyObject



50
51
52
# File 'app/models/solid_queue/queue.rb', line 50

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

#latencyObject



41
42
43
44
45
46
47
48
# File 'app/models/solid_queue/queue.rb', line 41

def latency
  @latency ||= begin
    now = Time.current
    oldest_enqueued_at = ReadyExecution.queued_as(name).minimum(:created_at) || now

    (now - oldest_enqueued_at).to_i
  end
end

#pauseObject



25
26
27
# File 'app/models/solid_queue/queue.rb', line 25

def pause
  Pause.create_or_find_by!(queue_name: name)
end

#paused?Boolean

Returns:

  • (Boolean)


21
22
23
# File 'app/models/solid_queue/queue.rb', line 21

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

#resumeObject



29
30
31
# File 'app/models/solid_queue/queue.rb', line 29

def resume
  Pause.where(queue_name: name).delete_all
end

#sizeObject



37
38
39
# File 'app/models/solid_queue/queue.rb', line 37

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