5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
# File 'lib/searchkick/process_queue_job.rb', line 5
def perform(class_name:, index_name: nil, inline: false, job_options: nil)
model = Searchkick.load_model(class_name)
index = model.searchkick_index(name: index_name)
limit = model.searchkick_options[:batch_size] || 1000
job_options = (model.searchkick_options[:job_options] || {}).merge(job_options || {})
loop do
record_ids = index.reindex_queue.reserve(limit: limit)
if record_ids.any?
batch_options = {
class_name: class_name,
record_ids: record_ids.uniq,
index_name: index_name
}
if inline
Searchkick::ProcessBatchJob.new.perform(**batch_options)
else
Searchkick::ProcessBatchJob.set(job_options).perform_later(**batch_options)
end
end
break unless record_ids.size == limit
end
end
|