process_queue_job.rb
689 Bytes
module Searchkick
class ProcessQueueJob < ActiveJob::Base
queue_as :searchkick
def perform(class_name:)
model = class_name.constantize
limit = model.searchkick_index.options[:batch_size] || 1000
record_ids = Searchkick::ReindexQueue.new(model.searchkick_index.name).reserve(limit: limit)
if record_ids.any?
Searchkick::ProcessBatchJob.perform_later(
class_name: model.name,
record_ids: record_ids
)
# TODO when moving to reliable queuing, mark as complete
if record_ids.size == limit
Searchkick::ProcessQueueJob.perform_later(class_name: class_name)
end
end
end
end
end