Class: Serially::TaskRun

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
lib/serially/task_run.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.finished_statusesObject



15
16
17
# File 'lib/serially/task_run.rb', line 15

def self.finished_statuses
  [TaskRun.statuses[:finished_ok], TaskRun.statuses[:finished_error]]
end

.write_task_run(task, item_id, success, result_msg, result_obj, error_handled) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/serially/task_run.rb', line 23

def self.write_task_run(task, item_id, success, result_msg, result_obj, error_handled)
  task_run = TaskRun.where(item_class: task.klass, item_id: item_id, task_name: task.name).first_or_initialize
  if task_run.finished?
    Resque.logger.warn("Serially: task '#{task.name}' for #{task.klass}/#{item_id} finished already, not saving this task run")
    false
  else
    saved = task_run.tap {|t|
      t.task_order = task.task_order
      t.status = success ? TaskRun.statuses[:finished_ok] : TaskRun.statuses[:finished_error]
      t.result_message = result_msg
      t.result_object = result_obj
      t.error_handled = error_handled
      t.finished_at = DateTime.now
    }.save
    saved
  end
end

Instance Method Details

#finished?Boolean

Returns:

  • (Boolean)


19
20
21
# File 'lib/serially/task_run.rb', line 19

def finished?
  finished_ok? || finished_error?
end