【问题标题】:After upgrading to new Rails version few images are broken升级到新的 Rails 版本后,很少有图像损坏
【发布时间】:2018-01-22 11:30:42
【问题描述】:

所以我的公司更新了 Rails 和 Ruby 版本,之后只有少数图像损坏。它们都在 scss 中用image_url("frontend/image_title.png") 定义,但只有其中 4 个不再显示,服务器给出 404 错误。 所有这些都用作背景图像。

什么是问题和解决方案?

【问题讨论】:

    标签: ruby-on-rails asset-pipeline imageurl


    【解决方案1】:

    您是否尝试过预编译资产?

    image_url 的调用也在资产预编译期间完成一次,因此生产中的资产可能仍然具有旧路径。

    要预编译运行以下命令:

    bundle exec rake assets:precompile
    

    【讨论】:

    • 是的,我们总是使用 assets:clobberassets:precompile,但只有这 4 张图片是 404 的。
    • 当您在浏览器中检查标记/资产时,它的完整路径是什么?
    • 如果你还没有看过的话,我建议你看看这里。它非常具有压缩性,涵盖了大多数要检查的区域。 stackoverflow.com/questions/21650699/…
    • 在浏览器中,它会在我的网站上查找资产,例如 mysite.com/assets/etc,但它应该查看亚马逊存储桶,就像所有其他图像一样,除了那些。
    【解决方案2】:

    看起来我总是会回答我自己的问题:)

    问题是使用资产管道编译的 .scss 文件很少,而这些 .scss 文件有一些相同的代码,例如 scss 变量和重置代码,我决定将它们移出单独的文件,称为reset.css.scss 并使用 @import 函数将该文件导入到那些 .scss 文件中,这对 Rails 的 *= require 方法效果不佳。

    将该代码移回 .scss 文件并删除 @import 内容后,一切正常。

    【讨论】:

    • 实际上,当另一个人进行资产破坏和编译时,它现在又出现了,所以问题仍然存在:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    • 1970-01-01
    • 2014-12-14
    • 2016-09-14
    • 2021-07-17
    相关资源
    最近更新 更多