class Sidekiq::Clutch::JobWrapper
Public Instance Methods
perform(bid, job_class, args, last_result_key, current_result_key)
click to toggle source
# File lib/sidekiq/clutch/job_wrapper.rb, line 6 def perform(bid, job_class, args, last_result_key, current_result_key) job = Object.const_get(job_class).new assign_previous_results(job, last_result_key) job.define_singleton_method(:batch) { Sidekiq::Batch.new(bid) } result = job.perform(*args) Sidekiq.redis do |redis| redis.multi do |multi| multi.rpush(current_result_key, result.to_json) multi.expire(current_result_key, TEMPORARY_KEY_EXPIRATION_DURATION) end end end
Private Instance Methods
assign_previous_results(job, last_result_key)
click to toggle source
# File lib/sidekiq/clutch/job_wrapper.rb, line 27 def assign_previous_results(job, last_result_key) return unless job.respond_to?(:previous_results=) return job.previous_results = [] if last_result_key.nil? job.previous_results = lookup_last_result(last_result_key).map do |r| JSON.parse(r, quirks_mode: true) # quirks_mode allows a bare string or number end end
lookup_last_result(key)
click to toggle source
# File lib/sidekiq/clutch/job_wrapper.rb, line 21 def lookup_last_result(key) Sidekiq.redis do |client| client.lrange(key, 0, -1) end end