app/models/scheduled_task/status.rb in tasks_scheduler-0.0.7 vs app/models/scheduled_task/status.rb in tasks_scheduler-0.0.8

- old
+ new

@@ -1,12 +1,12 @@ class ScheduledTask < ActiveRecord::Base module Status def status return STATUS_RUNNING if running? return STATUS_WAITING if waiting? - return STATUS_FAILED if failed? - fail "Unknown status (#{status_attributes_values})" + return last_fail_status if last_fail_status.present? + raise "Unknown status (#{status_attributes_values})" end def running? last_run_start.present? end @@ -14,30 +14,27 @@ def waiting? return true if ended?(last_run_successful_end, last_run_unsuccessful_end) status_attributes.all? { |a| send(a).blank? } end - def failed? - ended?(last_run_unsuccessful_end, last_run_successful_end) - end + private def ended?(time, oposite_time) !running? && time.present? && (oposite_time.blank? || oposite_time < time) end - private - def status_on_start update_attributes!(last_run_start: Time.zone.now) end - def status_on_end(exception) + def status_on_end(exception, last_fail_status) update_attributes!( next_run: calculate_next_run, (exception ? :last_run_unsuccessful_start : :last_run_successful_start) => last_run_start, (exception ? :last_run_unsuccessful_end : :last_run_successful_end) => Time.zone.now, last_run_start: nil, - pid: nil + pid: nil, + last_fail_status: exception ? last_fail_status : nil ) end def status_attributes %w(start successful_start successful_end unsuccessful_start unsuccessful_end).map do |a|