Module: ResqueDuplicateless::Ext::Resque::Job

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

Instance Method Summary collapse

Instance Method Details

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



9
10
11
# File 'lib/resque-duplicateless/ext/resque/job.rb', line 9

def create(queue, klass, *args)
  create_with_options :queue => queue, :class => klass, :args => args
end

#create_with_options(options = {}) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/resque-duplicateless/ext/resque/job.rb', line 13

def create_with_options(options = {})
  queue, klass, args = options[:queue], options[:class], options[:args]
  ::Resque.validate(klass, queue)

  if ::Resque.inline?
    # Instantiating a Resque::Job and calling perform on it so callbacks run

    # decode(encode(args)) to ensure that args are normalized in the same manner as a non-inline job

    new(:inline, {'class' => klass, 'args' => decode(encode(args))}).perform
  # FINALLY, a unique push!

  elsif options[:unique]
    ::Resque.unique_push(queue, :class => klass.to_s, :args => args)
  else
    ::Resque.push(queue, :class => klass.to_s, :args => args)
  end
end