Module: JobIteration::Iteration

Extended by:
ActiveSupport::Concern
Defined in:
lib/job-iteration/iteration.rb

Defined Under Namespace

Modules: ClassMethods Classes: CursorError

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#cursor_positionObject

Returns the value of attribute cursor_position.



9
10
11
# File 'lib/job-iteration/iteration.rb', line 9

def cursor_position
  @cursor_position
end

#start_timeObject

The time when the job starts running. If the job is interrupted and runs again, the value is updated.



15
16
17
# File 'lib/job-iteration/iteration.rb', line 15

def start_time
  @start_time
end

#total_timeObject

The total time (in seconds) the job has been running, including multiple iterations. The time isn’t reset if the job is interrupted.



19
20
21
# File 'lib/job-iteration/iteration.rb', line 19

def total_time
  @total_time
end

Instance Method Details

#deserialize(job_data) ⇒ Object



103
104
105
106
107
108
# File 'lib/job-iteration/iteration.rb', line 103

def deserialize(job_data) # @private
  super
  self.cursor_position = job_data["cursor_position"]
  self.times_interrupted = Integer(job_data["times_interrupted"] || 0)
  self.total_time = Float(job_data["total_time"] || 0.0)
end

#initialize(*arguments) ⇒ Object



85
86
87
88
89
90
91
92
# File 'lib/job-iteration/iteration.rb', line 85

def initialize(*arguments)
  super
  @job_iteration_retry_backoff = JobIteration.default_retry_backoff
  @needs_reenqueue = false
  self.times_interrupted = 0
  self.total_time = 0.0
  assert_implements_methods!
end

#perform(*params) ⇒ Object



110
111
112
113
114
# File 'lib/job-iteration/iteration.rb', line 110

def perform(*params) # @private
  interruptible_perform(*params)

  nil
end

#retry_jobObject



116
117
118
119
# File 'lib/job-iteration/iteration.rb', line 116

def retry_job(*, **)
  super unless defined?(@retried) && @retried
  @retried = true
end

#serializeObject



95
96
97
98
99
100
101
# File 'lib/job-iteration/iteration.rb', line 95

def serialize # @private
  super.merge(
    "cursor_position" => cursor_position,
    "times_interrupted" => times_interrupted,
    "total_time" => total_time,
  )
end