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