Sha256: 9916623e263658da7f8d221264c5912a2fd29d5ac33272adb00806d3425a7f9e

Contents?: true

Size: 801 Bytes

Versions: 16

Compression:

Stored size: 801 Bytes

Contents

module Searchkick
  class ReindexQueue
    attr_reader :name

    def initialize(name)
      @name = name

      raise Searchkick::Error, "Searchkick.redis not set" unless Searchkick.redis
    end

    def push(record_id)
      Searchkick.with_redis { |r| r.lpush(redis_key, record_id) }
    end

    # TODO use reliable queuing
    def reserve(limit: 1000)
      record_ids = Set.new
      while record_ids.size < limit && record_id = Searchkick.with_redis { |r| r.rpop(redis_key) }
        record_ids << record_id
      end
      record_ids.to_a
    end

    def clear
      Searchkick.with_redis { |r| r.del(redis_key) }
    end

    def length
      Searchkick.with_redis { |r| r.llen(redis_key) }
    end

    private

    def redis_key
      "searchkick:reindex_queue:#{name}"
    end
  end
end

Version data entries

16 entries across 16 versions & 2 rubygems

Version Path
searchkick-2.5.0 lib/searchkick/reindex_queue.rb
searchkick-hooopo-2.4.1 lib/searchkick/reindex_queue.rb
searchkick-hooopo-2.4.0 lib/searchkick/reindex_queue.rb
searchkick-2.4.0 lib/searchkick/reindex_queue.rb
searchkick-hooopo-2.3.5 lib/searchkick/reindex_queue.rb
searchkick-2.3.2 lib/searchkick/reindex_queue.rb
searchkick-hooopo-2.3.4 lib/searchkick/reindex_queue.rb
searchkick-2.3.1 lib/searchkick/reindex_queue.rb
searchkick-hooopo-2.3.3 lib/searchkick/reindex_queue.rb
searchkick-hooopo-2.3.2 lib/searchkick/reindex_queue.rb
searchkick-hooopo-2.3.1 lib/searchkick/reindex_queue.rb
searchkick-hooopo-2.3.0 lib/searchkick/reindex_queue.rb
searchkick-2.3.0 lib/searchkick/reindex_queue.rb
searchkick-2.2.1 lib/searchkick/reindex_queue.rb
searchkick-2.2.0 lib/searchkick/reindex_queue.rb
searchkick-2.1.1 lib/searchkick/reindex_queue.rb