ruby-on-rails VIP-警告**磁贴0 x 1104中的错误- GIF网站崩溃- Ruby on Rails

ehxuflar  于 2023-03-20  发布在  Ruby
关注(0)|答案(1)|浏览(138)

我已将应用部署到fly.io,但发现了一个有趣的错误,该错误仅影响生产。使用本地存储时,同一个gif不会导致此问题。该gif已上传到AWS S3
首先,我在磁贴0 x 1104中收到VIP警告**错误,然后是ActionView::Template::Error(gifload:图像完成前检测到图像EOF
下面是我用来加载图像的代码:

<% if post.images.attached? %>
    <% post.images.each do |image| %>
    <%= image_tag image.representation(loader: { n: -1 }, resize_to_fit: [400, nil]).processed, class: "img-fluid" %>
<% end %>

这就是我们要讨论的gif,我没有看到它有什么特别或奇怪的地方,我的其他gif文件更大,更宽,更高,不会导致应用程序崩溃。有没有办法用Active Storage来拯救失败的gif加载?

我试着添加这些行:

<% if post.images.attached? %>
  <% post.images.each do |image| %>
  <%= image_tag image.representation(loader: { n: -1 }, resize_to_fit: [400, nil]).processed, class: "img-fluid", onerror: "this.style.display='none'" %>
<% end %>

当我重新部署站点时,这没有修复任何问题

<% if post.images.attached? %>
  <% post.images.each do |image| %>
  <%= image_tag image.representation(loader: { n: -1 }, resize_to_fit: [400, nil]).processed, class: "img-fluid", rescue nil %>
<% end %>

这会导致一个语法错误,显然vips有问题,我找到了一个关于这个问题的旧线程,但是没有解决方案:https://github.com/libvips/libvips/issues/1701
我已经在开发中测试了使用AWS上传和加载gif,没有出现任何问题。

ygya80vv

ygya80vv1#

你的服务器上可能有一个很老的libvips二进制文件,我会找出它的版本。
例如:

$ irb
irb(main):001:0> require 'vips'
=> true
irb(main):002:0> Vips::LIBRARY_VERSION
=> "8.14.0"
irb(main):003:0>

ruby-vips是libvips库二进制文件的一层薄薄的皮肤,它本身几乎没有任何功能,它只是以ruby-like的方式在您的平台上呈现libvips二进制文件中可用的特性。
libvipsGIF处理在过去几年中有了很大的改进,听起来您的生产机器可能需要更新。

相关问题