Module: ResqueSerializer::MonkeyPatches::Resque

Included in:
Resque
Defined in:
lib/resque-serializer/monkey_patches/resque.rb

Instance Method Summary collapse

Instance Method Details

#pop(queue) ⇒ Object

NOTE: ‘Resque#pop` is called when working queued jobs via the `resque:work` rake task. Resque’s default implementation will not trigger the ‘before_dequeue` or `after_dequeue` hooks; this patch will force it do so.



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/resque-serializer/monkey_patches/resque.rb', line 8

def pop(queue)
  return unless (job_details = decode(data_store.pop_from_queue(queue)))
  klass  = job_details['class'].safe_constantize
  args   = job_details['args']

  # Perform before_dequeue hooks. Don't perform dequeue if any hook
  # returns false
  # rubocop:disable Metrics/LineLength
  before_hooks = ::Resque::Plugin.before_dequeue_hooks(klass).collect do |hook|
    klass.send(hook, *args)
  end

  return job_details if before_hooks.any? { |result| result == false }

  ::Resque::Plugin.after_dequeue_hooks(klass).each do |hook|
    klass.send(hook, *args)
  end

  job_details
end