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

.after_batch(&block) ⇒ Object



13
14
15
# File 'lib/wayfarer/base.rb', line 13

def after_batch(&block)
  after_batch_callbacks.push(block)
end

.after_batch_callbacksObject



9
10
11
# File 'lib/wayfarer/base.rb', line 9

def after_batch_callbacks
  @after_batch_callbacks ||= []
end

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



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

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

.discard_on(*argv) ⇒ Object



38
39
40
41
42
43
# File 'lib/wayfarer/base.rb', line 38

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

.retry_on(*argv) ⇒ Object



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

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

.run_after_batch_callbacksObject



17
18
19
# File 'lib/wayfarer/base.rb', line 17

def run_after_batch_callbacks
  after_batch_callbacks.each(&:call)
end

Instance Method Details

#perform(task) ⇒ Object



55
56
57
58
# File 'lib/wayfarer/base.rb', line 55

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

#retry_jobObject



49
50
51
52
53
# File 'lib/wayfarer/base.rb', line 49

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