Для отображения изображения браузеру нужен только URL-адрес изображения. Если вы не хотите сохранять изображение на жестком диске, вы можете закодировать его в URL-адрес данных.
...
scaled_page = first_page.scale(300, 450)
# Set the image format to png so that we can quantize it to reduce its size
scaled_page.format('png')
# Quantize the image
scaled_page = scaled_page.quantize
# A blob is just a binary string
blob = scaled_page.to_blob
# Base64 encode the blob and remove all line feeds
base64 = Base64.encode64(blob).tr("\n", "")
data_url = "data:image/png;base64,#{base64}"
# You need to find a way to send the data URL to the browser,
# e.g. `<%= image_tag data_url %>`
Но я настоятельно рекомендую сохранить миниатюры на жестком диске или лучше на CDN. потому что такие изображения трудно генерировать, но к ним часто обращаются браузеры. Если вы решили это сделать, вам нужна стратегия для генерации уникальных URL-адресов для этих миниатюр и способ связывания URL-адресов с вашими файлами PDF.