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|