From ced5ab67ab88700f547f5185e3a8e8cebb812e93 Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Mon, 12 Oct 2026 09:33:42 +0300 Subject: [PATCH] adjust generate previews --- lib/templates/process_document.rb | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/lib/templates/process_document.rb b/lib/templates/process_document.rb index e8f138f36..26d4d4530 100644 --- a/lib/templates/process_document.rb +++ b/lib/templates/process_document.rb @@ -90,23 +90,28 @@ module Templates pool = Concurrent::FixedThreadPool.new(concurrency) - promises = - range.map do |page_number| - doc_page = doc.get_page(page_number) + blobs = + range.each_slice(concurrency).flat_map do |page_numbers| + promises = + page_numbers.map do |page_number| + doc_page = doc.get_page(page_number) - hide_placeholder_widgets(doc_page, hide_empty: !flatten_pages) - doc_page.flatten if flatten_pages + hide_placeholder_widgets(doc_page, hide_empty: !flatten_pages) + doc_page.flatten if flatten_pages - bytes, width, height = doc_page.render_to_bitmap(width: MAX_WIDTH) + bytes, width, height = doc_page.render_to_bitmap(width: MAX_WIDTH) - image = Vips::Image.new_from_memory_copy(bytes, width, height, 4, :uchar) + image = Vips::Image.new_from_memory_copy(bytes, width, height, 4, :uchar) - Concurrent::Promise.execute(executor: pool) { build_and_upload_blob(image, page_number) } - ensure - doc_page&.close + Concurrent::Promise.execute(executor: pool) { build_and_upload_blob(image, page_number) } + ensure + doc_page&.close + end + + Concurrent::Promise.zip(*promises).value! end - Concurrent::Promise.zip(*promises).value!.each do |blob| + blobs.each do |blob| next unless blob ApplicationRecord.no_touching do