Class: Wayfarer::Base

Inherits:
ActiveJob::Base
  • Object
show all
Extended by:
Forwardable
Includes:
Middleware::Worker
Defined in:
lib/wayfarer/base.rb

Direct Known Subclasses

CLI::Job

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Middleware::Worker

included

Class Method Details

.crawl_later(url, batch: SecureRandom.uuid) ⇒ Object



32
33
34
# File 'lib/wayfarer/base.rb', line 32

def self.crawl_later(url, batch: SecureRandom.uuid)
  perform_later(Task.new(url, batch))
end

.discard_on(*argv) ⇒ Object



24
25
26
27
28
29
30
# File 'lib/wayfarer/base.rb', line 24

def self.discard_on(*argv)
  super(*argv) do |job, error|
    job.task.barrier.seen?(job.task.url)
    GC.new(job).run
    yield job, error if block_given?
  end
end

.retry_on(*argv) ⇒ Object



16
17
18
19
20
21
22
# File 'lib/wayfarer/base.rb', line 16

def self.retry_on(*argv)
  super(*argv) do |job, error|
    job.task.barrier.seen?(job.task.url)
    GC.new(job).run
    yield job, error if block_given?
  end
end

Instance Method Details

#perform(task) ⇒ Object



41
42
43
44
# File 'lib/wayfarer/base.rb', line 41

def perform(task)
  task.job = self
  chain.call(task)
end

#retry_jobObject



36
37
38
39
# File 'lib/wayfarer/base.rb', line 36

def retry_job(...)
  super(...) # increments the counter by re-enqueuing the job
  task.counter.decrement
end

#taskObject



46
47
48
# File 'lib/wayfarer/base.rb', line 46

def task
  arguments.first
end