Job refactoring

This commit is contained in:
Dzmitry Plashchynski
2015-03-14 03:07:49 +02:00
parent 4205b12fe1
commit 7e2e65e21b

View File

@@ -38,14 +38,8 @@ module Crono
def save def save
@semaphore.synchronize do @semaphore.synchronize do
log = model.reload.log || '' update_model
log << job_log.string clear_job_log
job_log.truncate(job_log.rewind)
model.update(
last_performed_at: last_performed_at,
log: log,
healthy: healthy
)
end end
end end
@@ -55,21 +49,40 @@ module Crono
private private
def clear_job_log
job_log.truncate(job_log.rewind)
end
def update_model
saved_log = model.reload.log || ''
log_to_save = saved_log + job_log.string
model.update(last_performed_at: last_performed_at, log: log_to_save,
healthy: healthy)
end
def perform_job def perform_job
performer.new.perform performer.new.perform
finished_time_sec = format('%.2f', Time.now - last_performed_at) finished_time_sec = format('%.2f', Time.now - last_performed_at)
rescue StandardError => e rescue StandardError => e
log_error "Finished #{performer} in #{finished_time_sec} seconds"\ handle_job_fail(e, finished_time_sec)
"with error: #{e.message}"
log_error e.backtrace.join("\n")
self.healthy = false
else else
self.healthy = true handle_job_success(finished_time_sec)
log "Finished #{performer} in #{finished_time_sec} seconds"
ensure ensure
save save
end end
def handle_job_fail(exception, finished_time_sec)
self.healthy = false
log_error "Finished #{performer} in #{finished_time_sec} seconds"\
"with error: #{exception.message}"
log_error exception.backtrace.join("\n")
end
def handle_job_success(finished_time_sec)
self.healthy = true
log "Finished #{performer} in #{finished_time_sec} seconds"
end
def log_error(message) def log_error(message)
log(message, Logger::ERROR) log(message, Logger::ERROR)
end end