class Sidekiq::Superworker::Subjob

Constants

ATTRIBUTES

Public Class Methods

all() click to toggle source
# File lib/sidekiq/superworker/subjob.rb, line 50
def all
  keys.collect { |key| find_by_key(key) }
end
count() click to toggle source
# File lib/sidekiq/superworker/subjob.rb, line 54
def count
  keys.length
end
create(attributes={}) click to toggle source
# File lib/sidekiq/superworker/subjob.rb, line 16
def create(attributes={})
  if attributes.is_a?(Array)
    attributes.collect { |attribute| create(attribute) }
  else
    object = new(attributes)
    object.save
    object
  end
end
delete_subjobs_for(superjob_id) click to toggle source
# File lib/sidekiq/superworker/subjob.rb, line 65
def delete_subjobs_for(superjob_id)
  Sidekiq.redis do |conn|
    keys = conn.smembers("#{redis_prefix}:#{superjob_id}:subjob_keys")
    conn.del(keys) if keys.any?
    conn.del("#{redis_prefix}:#{superjob_id}:subjob_keys")
  end
end
find_by_jid(jid) click to toggle source
# File lib/sidekiq/superworker/subjob.rb, line 26
def find_by_jid(jid)
  hash = Sidekiq.redis do |conn|
    conn.hgetall("#{redis_prefix}:#{jid}")
  end
  return nil if hash.blank?
  hash.collect do |key, value|
    hash[key] = ActiveSupport::JSON.decode(value)
  end
  new(hash)
end
find_by_key(key) click to toggle source
# File lib/sidekiq/superworker/subjob.rb, line 37
def find_by_key(key)
  return nil if key.blank?
  jid = key.split(':', 2).last
  find_by_jid(jid)
end
find_by_superjob_jid(jid) click to toggle source
# File lib/sidekiq/superworker/subjob.rb, line 43
def find_by_superjob_jid(jid)
  keys = Sidekiq.redis do |conn|
    conn.smembers("#{redis_prefix}:#{jid}:subjob_keys")
  end
  keys.collect { |key| find_by_key(key) }
end
jid(superjob_id, subjob_id) click to toggle source
# File lib/sidekiq/superworker/subjob.rb, line 83
def jid(superjob_id, subjob_id)
  "#{superjob_id}:#{subjob_id}"
end
keys() click to toggle source
# File lib/sidekiq/superworker/subjob.rb, line 58
def keys
  Sidekiq.redis do |conn|
    keys = conn.keys("#{redis_prefix}:*:subjob_keys")
    keys.collect { |key| conn.smembers(key) }.flatten
  end
end
new(params={}) click to toggle source
# File lib/sidekiq/superworker/subjob.rb, line 92
def initialize(params={})
  if params.present?
    params.each do |attribute, value|
      public_send("#{attribute}=", value)
    end
    Sidekiq.redis do |conn|
      conn.sadd("#{self.class.redis_prefix}:#{superjob_id}:subjob_keys", "#{self.class.redis_prefix}:#{superjob_id}:#{subjob_id}")
    end
  end
end
redis_prefix() click to toggle source
# File lib/sidekiq/superworker/subjob.rb, line 87
def redis_prefix
  Superworker.options[:subjob_redis_prefix]
end
transaction() { |conn| ... } click to toggle source
# File lib/sidekiq/superworker/subjob.rb, line 73
def transaction(&block)
  result = nil
  Sidekiq.redis do |conn|
    conn.multi do
      result = yield(conn)
    end
  end
  result
end

Public Instance Methods

==(other) click to toggle source
# File lib/sidekiq/superworker/subjob.rb, line 153
def ==(other)
  self.jid == other.jid
end
children() click to toggle source
# File lib/sidekiq/superworker/subjob.rb, line 143
def children
  return [] if children_ids.blank?
  children = children_ids.collect { |id| self.class.find_by_jid(self.class.jid(superjob_id, id)) }
  children.reject(&:nil?)
end
descendants_are_complete() click to toggle source
# File lib/sidekiq/superworker/subjob.rb, line 135
def descendants_are_complete
  @descendants_are_complete || false
end
jid() click to toggle source
# File lib/sidekiq/superworker/subjob.rb, line 127
def jid
  self.class.jid(superjob_id, subjob_id)
end
key() click to toggle source
# File lib/sidekiq/superworker/subjob.rb, line 131
def key
  "#{self.class.redis_prefix}:#{jid}"
end
next() click to toggle source
# File lib/sidekiq/superworker/subjob.rb, line 149
def next
  self.class.find_by_jid(self.class.jid(superjob_id, next_id))
end
parent() click to toggle source
# File lib/sidekiq/superworker/subjob.rb, line 139
def parent
  self.class.find_by_jid(self.class.jid(superjob_id, parent_id))
end
save() click to toggle source
# File lib/sidekiq/superworker/subjob.rb, line 103
def save
  return false unless self.valid?

  self.class.transaction do |conn|
    conn.mapped_hmset(key, to_param)
    conn.expire(key,Superworker.options[:superjob_expiration]) if Superworker.options[:superjob_expiration]
  end
  true
end
to_info() click to toggle source
# File lib/sidekiq/superworker/subjob.rb, line 157
def to_info
  "Subjob ##{jid} (#{superworker_class} > #{subworker_class})"
end
to_param() click to toggle source
# File lib/sidekiq/superworker/subjob.rb, line 161
def to_param
  param = {}
  ATTRIBUTES.each do |attribute|
    param["#{attribute.to_s}".to_sym] = public_send(attribute).to_json
  end
  param
end
update_attribute(attribute, value) click to toggle source
# File lib/sidekiq/superworker/subjob.rb, line 118
def update_attribute(attribute, value)
  public_send("#{attribute.to_s}=", value)
  return false unless self.valid?
  Sidekiq.redis do |conn|
    conn.hset(key, attribute.to_s, value.to_json)
  end
  true
end
update_attributes(pairs = {}) click to toggle source
# File lib/sidekiq/superworker/subjob.rb, line 113
def update_attributes(pairs = {})
  pairs.each_pair { |attribute, value| public_send("#{attribute}=", value) }
  self.save
end