class Searchkick::ReindexQueue

Attributes

name[R]

Public Class Methods

new(name) click to toggle source
# File lib/searchkick/reindex_queue.rb, line 5
def initialize(name)
  @name = name

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

Public Instance Methods

clear() click to toggle source
# File lib/searchkick/reindex_queue.rb, line 24
def clear
  Searchkick.with_redis { |r| r.del(redis_key) }
end
length() click to toggle source
# File lib/searchkick/reindex_queue.rb, line 28
def length
  Searchkick.with_redis { |r| r.llen(redis_key) }
end
push(record_id) click to toggle source
# File lib/searchkick/reindex_queue.rb, line 11
def push(record_id)
  Searchkick.with_redis { |r| r.lpush(redis_key, record_id) }
end
reserve(limit: 1000) click to toggle source

TODO use reliable queuing

# File lib/searchkick/reindex_queue.rb, line 16
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

Private Instance Methods

redis_key() click to toggle source
# File lib/searchkick/reindex_queue.rb, line 34
def redis_key
  "searchkick:reindex_queue:#{name}"
end