我正在制作Rails 3.2应用程序。最近(不幸的是,我不确切地知道什么时候)有人向我指出一些图像被破坏了:服务器正在为他们返回404。我确认在标记中和CSS文件中引用的某些图像都是这种情况。
如果我尝试单独加载图片,比如https://www.navigatingcancer.com/assets/screenshots/discussions_groups-8d04988b189bf9093348b8246ad5f4b7.png,那就是404s。但是,如果我删除了MD5指纹,则会加载图像。
当我进入生产并运行
时 helper.asset_path('screenshots/discussions_groups.png')
我得到了
/assets/screenshots/discussions_groups-3c30cbd76d94e13f6c6c6a1712cbedc5.png
请注意,此指纹与上述标记引用的指纹不同。事实上,如果我将它放在URL中,此 URL和指纹加载就会出现。
似乎Rails在代码中为此图像提供过时的MD5指纹。
请注意,图像是受其影响的唯一资产,而不是样式表或JS文件。此外,图像没有改变。
turbo_sprockets
宝石,我认为它可能与它有关,但我把它从Gemfile
中取出并重新部署。哈希必须重新生成,因为这次不同的图像被打破了。find . -name discussions_groups*
,它找到了上面asset_path
中引用的那个(即带有效散列的那个),但没有标记中引用的那个grep
为discussions_groups
编辑,public/assets/manifest.yml
中引用的版本是具有有效哈希的版本。注意:我认识到这可能与我的生产环境有关,但我希望我的错误足够通用,以便答案可以对其他人有所帮助。