【问题标题】:Rails 6 deployed on Heroku won't update Stylesheets部署在 Heroku 上的 Rails 6 不会更新样式表
【发布时间】:2020-01-21 22:45:28
【问题描述】:

我构建了一个 Rails 6 应用程序并将其部署到 Heroku。但是我对样式表所做的任何更改都不会反映出来。在这方面,所有 Heroku 文档和 SO 问题/答案似乎不再与当前的 Rails 设置相关。我可以在推送到 heroku 之前预编译资产,但我不希望这样做。实际上,我确实找到了一个“解决方案”,但感觉更像是一个 hack,而不是真正的解决方案。如果我打开 config/initializers/assets.rb 并更改语句:

Rails.application.config.assets.version = '1.0'

Rails.application.config.assets.version = '1.1'

然后它将更新资产。但这意味着如果我正在尝试网站的外观,我会一直更改版本。我的意思是,如果这是他们应该工作的方式,我会接受它,但它似乎不正确。有人知道让 Heroku 在每次推送时更新它的方法吗?

【问题讨论】:

    标签: ruby-on-rails heroku asset-pipeline ruby-on-rails-6


    【解决方案1】:

    您必须从 heroku 端编译资产(即在 Heroku 上的服务器中),因此在将代码推送到 Heroku 后,运行:

    $ heroku run rake assets:precompile
    # If above doesn't work
    $ heroku run RAILS_ENV=production rake assets:precompile
    

    另外,将public/assets(或任何预编译到的文件夹)文件夹添加到您的.gitignore 文件中是一个好习惯,因此如果您在本地环境中预编译资产,这不会与您的生产环境混淆你推到 Heroku。但是每次你更改一些 CSS 并推送到 heroku 时,你都需要从上面的命令中预编译 Heroku 端的资产。

    【讨论】:

    • 不幸的是,这些都不起作用。或者更准确地说,Heroku 似乎确实在根据日志预编译资产,但它以某种方式预编译了它们的旧版本。只有当我更改资产版本号时,它才会考虑任何更改,尽管在开发中它确实会考虑它们。这是 Rails 6 的一个新问题,因为我的 Rails 5 应用程序从来没有遇到过这个问题。
    • 您是否先删除了您的public/assets/ 文件夹,然后将public/assets 包含在您的.gitignore 文件中?
    • 项目中没有 public/assets 文件夹。
    • 嘿@SteveCarey,只是想知道您是否记得找到解决方案?在使用 Rails 6 的 heroku 中未更新 scss 文件时遇到问题。痛苦的 ****!
    • @Bradley 好吧,我不想告诉你错误的事情,因为已经有一段时间了。但我认为我最终做的是在我的开发环境中本地预编译资产,然后将预编译的资产推送到 Heroku。
    猜你喜欢
    • 2014-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 2011-04-20
    • 2012-04-17
    • 1970-01-01
    相关资源
    最近更新 更多