Module: Que::RecordJobStatus

Defined in:
lib/record_job_status.rb

Instance Method Summary collapse

Instance Method Details

#job_idObject



2
3
4
# File 'lib/record_job_status.rb', line 2

def job_id
  @job_id || 0
end

#job_scopeObject



56
57
58
# File 'lib/record_job_status.rb', line 56

def job_scope
  QueJobStatus.where(job_id: job_id)
end

#notify_dev_if_needed(e) ⇒ Object



23
24
25
# File 'lib/record_job_status.rb', line 23

def notify_dev_if_needed(e)
  super if defined?(super)
end

#parent_job_idObject



6
7
8
9
10
# File 'lib/record_job_status.rb', line 6

def parent_job_id
  @attrs['args'].first['parent_job_id'] || nil
rescue
  nil
end

#record_job_failed(e) ⇒ Object



27
28
29
30
# File 'lib/record_job_status.rb', line 27

def record_job_failed(e)
  TN.logger.error(service: 'que_jobs', status: 'error', error: e.to_json)
  job_scope.update_all(status: 'failed', error: { message: e.message, caller: e.backtrace, args: e.as_json })
end

#record_job_finishedObject



48
49
50
# File 'lib/record_job_status.rb', line 48

def record_job_finished
  job_scope.update_all(finished_at: Time.now, status: 'finished')
end

#record_job_startedObject



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/record_job_status.rb', line 32

def record_job_started
  QueJobStatus.where(job_id: job_id).delete_all

  hash = {
    job_id: job_id,
    attrs: attrs,
    status: 'executing'
  }

  if QueJobStatus.connection.column_exists?(:que_job_status, :parent_job_id)
    hash[:parent_job_id] = parent_job_id
  end

  QueJobStatus.create!(hash)
end

#run(args = {}) ⇒ Object



13
14
15
16
17
18
19
20
21
# File 'lib/record_job_status.rb', line 13

def run(args={})
  @job_id = self.attrs.symbolize_keys[:job_id]
  record_job_started
  super if defined?(super)
  record_job_finished
rescue => e
  record_job_failed(e)
  notify_dev_if_needed(e)
end

#update_job_data(job_data) ⇒ Object



52
53
54
# File 'lib/record_job_status.rb', line 52

def update_job_data(job_data)
  job_scope.update_all(job_data: job_data)
end