Module: ResqueDuplicateless::Ext::Resque

Included in:
Resque
Defined in:
lib/resque-duplicateless/ext/resque.rb,
lib/resque-duplicateless/ext/resque/job.rb,
lib/resque-duplicateless/ext/resque/data_store.rb

Defined Under Namespace

Modules: DataStore, Job

Instance Method Summary collapse

Instance Method Details

#enqueue_to(queue, klass, *args) ⇒ Object

We need to rewrite enqueue_to in order to use enqueue_with-options



16
17
18
# File 'lib/resque-duplicateless/ext/resque.rb', line 16

def enqueue_to(queue, klass, *args)
  enqueue_with_options :queue => queue, :class => klass, :args => args
end

#enqueue_uniquely(klass, *args) ⇒ Object

This method is basically a copy of “enqueue”, but it will make sure that the enqueue method happens uniquely using this plugin



11
12
13
# File 'lib/resque-duplicateless/ext/resque.rb', line 11

def enqueue_uniquely(klass, *args)
  enqueue_uniquely_to queue_from_class(klass), klass, *args
end

#enqueue_uniquely_to(queue, klass, *args) ⇒ Object

This is basically a copy of enqueue_to, but will make sure that the enqueue happens uniquely using this plugin



22
23
24
# File 'lib/resque-duplicateless/ext/resque.rb', line 22

def enqueue_uniquely_to(queue, klass, *args)
  enqueue_with_options :queue => queue, :class => klass, :args => args, :unique => true
end

#enqueue_with_options(options = {}) ⇒ Object

We are going to create a new “base” job creation method. This will allow us to send options into the enqueue function and, eventually, the Job.create function



28
29
30
31
32
# File 'lib/resque-duplicateless/ext/resque.rb', line 28

def enqueue_with_options(options = {})
  surround_enqueue(options) do
    ::Resque::Job.create_with_options(options)
  end
end

#unique_push(queue, item) ⇒ Object



5
6
7
# File 'lib/resque-duplicateless/ext/resque.rb', line 5

def unique_push(queue, item)
  data_store.uniquely_push_to_queue queue, encode(item)
end