Class: Draisine::JobBase

Inherits:
ActiveJob::Base show all
Defined in:
lib/draisine/jobs/job_base.rb

Instance Method Summary collapse

Methods inherited from ActiveJob::Base

deserialize

Instance Method Details

#_perform(*args) ⇒ Object



20
21
# File 'lib/draisine/jobs/job_base.rb', line 20

def _perform(*args)
end

#deserialize(job_data) ⇒ Object



35
36
37
38
# File 'lib/draisine/jobs/job_base.rb', line 35

def deserialize(job_data)
  super
  @retry_attempt = job_data.fetch('_retry_attempt', 0)
end

#perform(*args) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/draisine/jobs/job_base.rb', line 5

def perform(*args)
  _perform(*args)
rescue Exception => ex
  logger.error "#{ex.class}: #{ex}\n#{ex.backtrace.join("\n")}"

  if retry_attempt < retries_count
    @retry_attempt = retry_attempt + 1
    logger.error "Retrying (attempt #{retry_attempt})"
    retry_job
  else
    logger.error "Too many attempts, no more retries"
    Draisine.job_error_handler.call(ex, self, arguments)
  end
end

#retries_countObject



23
24
25
# File 'lib/draisine/jobs/job_base.rb', line 23

def retries_count
  Draisine.job_retry_attempts
end

#retry_attemptObject



27
28
29
# File 'lib/draisine/jobs/job_base.rb', line 27

def retry_attempt
  @retry_attempt ||= 0
end

#serializeObject



31
32
33
# File 'lib/draisine/jobs/job_base.rb', line 31

def serialize
  super.merge('_retry_attempt' => retry_attempt)
end