Sha256: 4124ec805c7f7166bf04b46eeb1b330121361ba34f0ecd9df7a248538f1fc873

Contents?: true

Size: 665 Bytes

Versions: 3

Compression:

Stored size: 665 Bytes

Contents

#!/usr/bin/env ruby

module Flapjack

  class RecordQueue

    def initialize(queue, object_klass)
      @queue = queue
      @object_klass = object_klass
    end

    def push(object)
      Flapjack.redis.multi do
        Flapjack.redis.lpush(@queue, object.id)
        Flapjack.redis.lpush("#{@queue}_actions", "+")
      end
    end

    def foreach(options = {})
      while object_id = Flapjack.redis.rpop(@queue)
        next unless object = @object_klass.find_by_id(object_id)
        yield object if block_given?
        object.destroy unless options[:keep]
      end
    end

    def wait
      Flapjack.redis.brpop("#{@queue}_actions")
    end

  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
flapjack-2.0.0 lib/flapjack/record_queue.rb
flapjack-2.0.0rc1 lib/flapjack/record_queue.rb
flapjack-2.0.0b1 lib/flapjack/record_queue.rb