在wicked_pdf中使用ActiveStorage Image



我无法让ActiveStorage图像在生产中工作。我想在我生成的PDF正文中使用一个调整大小的图像(变体)。

= image_tag(@post.image.variant(resize_to_limit: [150, 100]))

它在开发中工作,但在生产中生成PDF无限期挂起,除非我把那行删除。

我尝试过@post.image.variant(resize_to_limit: [150, 100]).processed.url和设置Rails.application.default_url_options = { host: "example.com" }

具有讽刺意味的是,当我重新启动乘客它发送PDF到浏览器,它实际上看起来很好。图片已包含。

类似:

= wicked_pdf_image_tag(@post.image.variant(resize_to_limit: [150, 100]).processed.url)

Rails 7.0.3, Ruby 3.1.2, wicked_pdf 2.6.3

感谢@Unixmonkey我添加了passenger_min_instances 3;到我的服务器块在Nginx配置,它最初工作,但会挂载乘客。因为我没有足够的内存来增加这个数字,所以我提出了一个基于从文件中读取图像的不同解决方案。

= image_tag(active_storage_to_base64_image(@post.image.variant(resize_to_limit: [150, 100])))

然后在application_helper.rb

中创建了一个helper
def active_storage_to_base64_image(image)
require "base64"
file = File.open(ActiveStorage::Blob.service.path_for(image.processed.key))
base64 = Base64.encode64(file.read).gsub(/s+/, '')
file.close
"data:image/png;base64,#{Rack::Utils.escape(base64)}"
end

我已经为PNG文件硬编码了,因为这就是我所需要的。仅适用于磁盘存储。欢迎改进

相关内容

  • 没有找到相关文章

最新更新