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