class Sidekiq::WorkSet

def each(&block)

def each(&block)
  results = []
  procs = nil
  all_works = nil
  Sidekiq.redis do |conn|
    procs = conn.sscan("processes").to_a.sort
    all_works = conn.pipelined do |pipeline|
      procs.each do |key|
        pipeline.hgetall("#{key}:work")
      end
    end
  end
  procs.zip(all_works).each do |key, workers|
    workers.each_pair do |tid, json|
      results << [key, tid, Sidekiq::Work.new(key, tid, Sidekiq.load_json(json))] unless json.empty?
    end
  end
  results.sort_by { |(_, _, work)| work.run_at }.each(&block)
end