Мне нравится создавать PDF-файлы, которые также включают изображения, загруженные пользователем. Prawn gem работает до сих пор, а также может встраивать изображения, расположенные в файловой системе. Моя проблема в том, что я хочу включить загруженные пользователем изображения, и место хранения этих изображений, вероятно, изменится в будущем (от файловой системы до какой-то облачной службы). Я использую драгоценный камень стрекозы для обработки изображений, он использует стойку для доступа к изображениям и иногда обрабатывает их на лету.
Теперь самая простая идея не работает (с report
моим объектом и spot_image
моим полем изображения)
image report.spot_image
no implicit conversion of #<Class:0x007fc07ecf1110> into String
Я также пытался открыть файл через http с помощью open-uri. Это должно работать, но блокируется на моей машине разработки, я думаю, потому что сервер разработки rails является однопоточным:
image_path = report.spot_image.remote_url
image_url = "#{view.request.protocol}\#view.request.host_with_port}
/#{image_path.sub(/^\//,"")}"
image open(image_url) # timeout in development-mode
Вероятно, он может работать в продакшене, но даже тогда он выполняет ненужный http-запрос. Могу ли я попросить стрекозу (или стойку) напрямую для изображения? prawn использует утиную печать и нуждается в каком-то объекте, который реагирует на read
и rewind
как изображение.
It may probably work in production, but even then it does a needless http-request
- что ты имеешь в виду под ненужным? Если это удаленное изображение, то какой-то компонент должен будет сделать http-запрос, чтобы получить его для встраивания. - person Cody Caughlan   schedule 17.07.2015