From 7e2e65e21b085c9530edc7c7bca11040ff6ef4fb Mon Sep 17 00:00:00 2001 From: Dzmitry Plashchynski Date: Sat, 14 Mar 2015 03:07:49 +0200 Subject: [PATCH] Job refactoring --- lib/crono/job.rb | 41 +++++++++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/lib/crono/job.rb b/lib/crono/job.rb index d3d69e7..7b22673 100644 --- a/lib/crono/job.rb +++ b/lib/crono/job.rb @@ -38,14 +38,8 @@ module Crono def save @semaphore.synchronize do - log = model.reload.log || '' - log << job_log.string - job_log.truncate(job_log.rewind) - model.update( - last_performed_at: last_performed_at, - log: log, - healthy: healthy - ) + update_model + clear_job_log end end @@ -55,21 +49,40 @@ module Crono 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 performer.new.perform finished_time_sec = format('%.2f', Time.now - last_performed_at) rescue StandardError => e - log_error "Finished #{performer} in #{finished_time_sec} seconds"\ - "with error: #{e.message}" - log_error e.backtrace.join("\n") - self.healthy = false + handle_job_fail(e, finished_time_sec) else - self.healthy = true - log "Finished #{performer} in #{finished_time_sec} seconds" + handle_job_success(finished_time_sec) ensure save 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) log(message, Logger::ERROR) end