【发布时间】:2018-01-22 11:30:42
【问题描述】:
所以我的公司更新了 Rails 和 Ruby 版本,之后只有少数图像损坏。它们都在 scss 中用image_url("frontend/image_title.png") 定义,但只有其中 4 个不再显示,服务器给出 404 错误。
所有这些都用作背景图像。
什么是问题和解决方案?
【问题讨论】:
标签: ruby-on-rails asset-pipeline imageurl
所以我的公司更新了 Rails 和 Ruby 版本,之后只有少数图像损坏。它们都在 scss 中用image_url("frontend/image_title.png") 定义,但只有其中 4 个不再显示,服务器给出 404 错误。
所有这些都用作背景图像。
什么是问题和解决方案?
【问题讨论】:
标签: ruby-on-rails asset-pipeline imageurl
您是否尝试过预编译资产?
image_url 的调用也在资产预编译期间完成一次,因此生产中的资产可能仍然具有旧路径。
要预编译运行以下命令:
bundle exec rake assets:precompile
【讨论】:
assets:clobber 和 assets:precompile,但只有这 4 张图片是 404 的。
mysite.com/assets/etc,但它应该查看亚马逊存储桶,就像所有其他图像一样,除了那些。
看起来我总是会回答我自己的问题:)
问题是使用资产管道编译的 .scss 文件很少,而这些 .scss 文件有一些相同的代码,例如 scss 变量和重置代码,我决定将它们移出单独的文件,称为reset.css.scss 并使用 @import 函数将该文件导入到那些 .scss 文件中,这对 Rails 的 *= require 方法效果不佳。
将该代码移回 .scss 文件并删除 @import 内容后,一切正常。
【讨论】: