rosa-build/app/jobs/abf_worker/base_observer.rb

44 lines
1.0 KiB
Ruby
Raw Permalink Normal View History

module AbfWorker
2016-05-28 19:21:02 +01:00
class BaseObserver < BaseActiveRecordJob
include Sidekiq::Worker
2013-02-06 11:18:29 +00:00
COMPLETED = 0
FAILED = 1
PENDING = 2
STARTED = 3
CANCELED = 4
TESTS_FAILED = 5
attr_accessor :status, :options
2016-06-04 16:25:08 +01:00
def perform_with_ar_connection(options)
2014-05-29 21:05:13 +01:00
@status = options['status'].to_i
@options = options
2016-05-28 19:21:02 +01:00
real_perform
end
2016-05-28 19:21:02 +01:00
def real_perform
raise NotImplementedError, "You should implement this method"
end
protected
def subject
@subject ||= @subject_class.find(options['id']) rescue nil
end
def update_results
2014-05-29 21:05:13 +01:00
now = Time.zone.now.to_i
results = options['results'] || []
results.each{ |r| r['timestamp'] = now }
results += subject.results || []
sort_results_and_save(results)
end
def sort_results_and_save(results, item = subject)
item.results = results.sort_by{ |r| [r['timestamp'].to_s, r['file_name'].to_s] }
2014-01-21 04:51:49 +00:00
item.save(validate: false)
end
end
end