Class: Wayfarer::Middleware::Dedup

Inherits:
Object
  • Object
show all
Extended by:
Base
Defined in:
lib/wayfarer/middleware/dedup.rb

Constant Summary

Constants included from Base

Base::API_MODULE

Instance Method Summary collapse

Methods included from Base

api, lazy

Instance Method Details

#call(task) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/wayfarer/middleware/dedup.rb', line 14

def call(task)
  task[:barrier] ||= Wayfarer::Redis::Barrier.new(task)

  if task[:job].executions > 1
    log(:retry, task)
    return yield if block_given?
  end

  if task[:job] != task[:controller]
    log(:rerouted, task)
    return yield if block_given?
  end

  return log(:deduplicated, task) if task[:barrier].check!(task[:normalized_url])

  yield if block_given?
end