使用mogrify调整大小后在资产中找不到图像

时间:2016-05-17 20:35:13

标签: ruby-on-rails asset-pipeline

我遇到了一个非常奇怪的错误。

我的网站工作得很好,但我不得不在着陆页上调整一些图片的大小,因为它太重了,而且它们的页面速度变慢了。

我使用mogrify来调整app / assets / images中的所有图像

mogrify -resize 50% *.jpg

调整大小后,我使用

删除了所有资源
rake assets:clean

然后

rake assets:precompile

重新编译资产管道中的图像,但是现在图像不再显示,即使我清除了浏览器的缓存。如果我更改图像的名称,并在我的视图中相应地,一切正常。

更新:

问题是当我调整图像大小时,编译的文件名会发生变化。这是我尝试访问图像时出现的错误:

No route matches [GET] "/assets/image-small-05a31635ef97c8b04eaeb6e5f3f9053f1146ed1cae0796aed876f086f934cf0b.jpg"

但在资产路径中,同一个文件的名称为:

image-small-a8859704b69e18b59af2760e724b27560d1d40a597595308241845f563197a27.jpg

因此,文件系统上的随机部分更改但在网页中没有更改。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

我假设您正在使用正确的资产路径助手等,因为您的资产在恶作剧之前成功出现。

请确保没有关于资产过期版本的缓存。

  • 删除您的网络浏览器的缓存(强制重新加载也是如此)
  • 使用rake assets:clean
  • 删除已预编译的资产
  • 使用rake tmp:clear
  • 删除服务器上的所有元数据
  • 使用rake cache:clear
  • 删除Rails.cache中的条目(例如memcache)

停止(并重新启动)任何Ruby预加载器,如Zeus,如果你使用的话。

最后,重新启动Rails应用程序服务器。

这应该会使您的资产重新上线。