Class: Dalliance::Workers::Resque

Inherits:
ActiveJob::Base
  • Object
show all
Defined in:
lib/dalliance/workers/resque.rb,
lib/dalliance/workers/resque.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.dequeue(instance) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/dalliance/workers/resque.rb', line 13

def self.dequeue(instance)
  redis = ::Resque.redis
  queue = instance.processing_queue

  redis.everything_in_queue(queue).each do |string|
    # Structure looks like, e.g.
    # { 'class' => 'ActiveJob::...', 'args' => [{ 'arguments' => ['SomeClass', 123, 'dalliance_process'] }] }
    data = ::Resque.decode(string)
    dalliance_args = data['args'][0]['arguments']

    if dalliance_args == [instance.class.name, instance.id, 'dalliance_process'] ||
       dalliance_args == [instance.class.name, instance.id, 'dalliance_reprocess']
      redis.remove_from_queue(queue, string)
    end
  end
end

.enqueue(instance, queue = 'dalliance', perform_method) ⇒ Object



7
8
9
10
11
# File 'lib/dalliance/workers/resque.rb', line 7

def self.enqueue(instance, queue = 'dalliance', perform_method)
  Dalliance::Workers::Resque
    .set(queue: queue)
    .perform_later(instance.class.name, instance.id, perform_method.to_s)
end

.perform(instance_klass, instance_id, perform_method) ⇒ Object



101
102
103
104
105
106
# File 'lib/dalliance/workers/resque.rb', line 101

def self.perform(instance_klass, instance_id, perform_method)
  instance_klass
    .constantize
    .find(instance_id)
    .send(perform_method, true)
end

.queued?(instance, queue_name) ⇒ Boolean

Returns:

  • (Boolean)


30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/dalliance/workers/resque.rb', line 30

def self.queued?(instance, queue_name)
  # All current jobs in the queue
  queued_jobs =
    ::Resque.redis.everything_in_queue(queue_name)
      .map(&::Resque.method(:decode))

  queued_jobs.any? do |job_info_hash|
    args = job_info_hash['args']
    next unless args.is_a?(Array)

    arg = args[0]
    next unless arg.is_a?(Hash)

    arg.fetch('arguments', []).first(2) ==
      [instance.class.name, instance.id]
  end
end

.rescue_error?Boolean

Resque fails, so don’t rescue the error

Returns:

  • (Boolean)


56
57
58
# File 'lib/dalliance/workers/resque.rb', line 56

def self.rescue_error?
  false
end

Instance Method Details

#perform(instance_klass, instance_id, perform_method) ⇒ Object



48
49
50
51
52
53
# File 'lib/dalliance/workers/resque.rb', line 48

def perform(instance_klass, instance_id, perform_method)
  instance_klass
    .constantize
    .find(instance_id)
    .send(perform_method, true)
end