Class: Resque::Job

Inherits:
Object
  • Object
show all
Defined in:
lib/resque/unique_in_queue/resque_ext/job.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.create_unique_in_queue(queue, klass, *args) ⇒ Object Also known as: create

Mark an item as queued



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/resque/unique_in_queue/resque_ext/job.rb', line 5

def create_unique_in_queue(queue, klass, *args)
  item = { class: klass.to_s, args: args }
  if Resque.inline? || !Resque::UniqueInQueue::Queue.is_unique?(item)
    return create_without_unique_in_queue(queue, klass, *args)
  end
  return 'EXISTED' if Resque::UniqueInQueue::Queue.queued?(queue, item)

  create_return_value = false
  # redis transaction block
  Resque.redis.multi do
    create_return_value = create_without_unique_in_queue(queue, klass, *args)
    Resque::UniqueInQueue::Queue.mark_queued(queue, item)
  end
  create_return_value
end

.destroy_unique_in_queue(queue, klass, *args) ⇒ Object Also known as: destroy

Mark destroyed jobs as unqueued



29
30
31
32
# File 'lib/resque/unique_in_queue/resque_ext/job.rb', line 29

def destroy_unique_in_queue(queue, klass, *args)
  Resque::UniqueInQueue::Queue.destroy(queue, klass, *args) unless Resque.inline?
  destroy_without_unique_in_queue(queue, klass, *args)
end

.reserve_unique_in_queue(queue) ⇒ Object Also known as: reserve

Mark an item as unqueued



22
23
24
25
26
# File 'lib/resque/unique_in_queue/resque_ext/job.rb', line 22

def reserve_unique_in_queue(queue)
  item = reserve_without_unique_in_queue(queue)
  Resque::UniqueInQueue::Queue.mark_unqueued(queue, item) if item && !Resque.inline?
  item
end

Instance Method Details

#priority_create_unique_in_queue(queue, klass, *args) ⇒ Object Also known as: priority_create

Hack to support resque-priority_enqueue: github.com/coupa/resque-priority_enqueue



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/resque/unique_in_queue/resque_ext/job.rb', line 43

def priority_create_unique_in_queue(queue, klass, *args)
  item = { class: klass.to_s, args: args }
  if Resque.inline? || !Resque::UniqueInQueue::Queue.is_unique?(item)
    return priority_create_without_unique_in_queue(queue, klass, *args)
  end
  return 'EXISTED' if Resque::UniqueInQueue::Queue.queued?(queue, item)

  priority_create_return_value = false
  # redis transaction block
  Resque.redis.multi do
    priority_create_return_value = priority_create_without_unique_in_queue(queue, klass, *args)
    Resque::UniqueInQueue::Queue.mark_queued(queue, item)
  end
  priority_create_return_value
end