【发布时间】:2015-07-08 14:54:14
【问题描述】:
我喜欢生成 PDF 文件,其中还包括用户上传的图像。到目前为止,prawn gem 可以工作,并且还可以嵌入位于文件系统中的图像。 我的问题是我想包含用户上传的图像,并且这些图像的存储位置将来可能会改变(从文件系统到某些云服务)。 我使用蜻蜓 gem 来处理图像,这使用 rack 来访问图像,有时会动态处理它们。
现在最简单的想法行不通
(report 是我的对象,spot_image 我的图像字段)
image report.spot_image
no implicit conversion of #<Class:0x007fc07ecf1110> into String
我还尝试使用 open-uri 通过 http 打开文件。这应该可以,但它在我的开发机器上阻塞,我认为是因为开发 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 请求来获取它以供您嵌入
标签: ruby-on-rails ruby rack prawn dragonfly-gem