Sha256: 445bad18fdbed72506872a0b70fe921d908126cc2bf0959fdab1916f2cd5cabb

Contents?: true

Size: 1.25 KB

Versions: 3

Compression:

Stored size: 1.25 KB

Contents

module Sidekiq::Status::Worker
  include Sidekiq::Status::Storage

  class Stopped < StandardError
  end

  attr_accessor :expiration

  # Stores multiple values into a job's status hash,
  # sets last update time
  # @param [Hash] status_updates updated values
  # @return [String] Redis operation status code
  def store(hash)
    store_for_id @provider_job_id || @job_id || @jid || "", hash, @expiration
  end

  # Read value from job status hash
  # @param String|Symbol hask key
  # @return [String]
  def retrieve(name)
    read_field_for_id @provider_job_id || @job_id || @jid || "", name
  end

  # Sets current task progress
  # (inspired by resque-status)
  # @param Fixnum number of tasks done
  # @param String optional message
  # @return [String]
  def at(num, message = nil)
    @_status_total = 100 if @_status_total.nil?
    pct_complete = ((num / @_status_total.to_f) * 100).to_i rescue 0
    store(at: num, total: @_status_total, pct_complete: pct_complete, message: message, working_at: working_at)
  end

  # Sets total number of tasks
  # @param Fixnum total number of tasks
  # @return [String]
  def total(num)
    @_status_total = num
    store(total: num, working_at: working_at)
  end

  private

  def working_at
    @working_at ||= Time.now.to_i
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
sidekiq-status-3.0.3 lib/sidekiq-status/worker.rb
sidekiq-status-3.0.2 lib/sidekiq-status/worker.rb
sidekiq-status-3.0.1 lib/sidekiq-status/worker.rb