【问题标题】:Rails 7 css assets are not working in production, need help understanding how the asset pipeline works without webpackerRails 7 css 资产无法在生产中运行,需要帮助了解资产管道在没有 webpacker 的情况下如何工作
【发布时间】:2022-08-13 09:22:14
【问题描述】:

尝试使用顺风和 postcss 的 rails 7。

我在资产/样式表中有一些样式表,我通过同一文件夹中名为 imports.css 的文件导入这些样式表。

//imports.css
@import stylesheet1.css;
@import stylesheet2.css;

然后我在 application.html.erb 中导入该文件,其中包含以下内容:

//application.html.erb
<%= stylesheet_link_tag \"application\", \"imports\", \"data-turbo-track\": \"reload\" %>

在开发过程中,一切都按预期运行良好,与顺风相得益彰。由于 postcss,导入工作正常。但是在生产(nginx,puma)中,它试图拉入这些文件并失败。对于我拥有的每个样式表,我在浏览器控制台中看到:

GET https://mywebsite.com/assets/style/stylesheet1.css net::ERR_ABORTED 404(未找到)

我正在尝试将我的大脑从 rails 6 中的 webpacker 转移,不确定我需要在这里做什么......一些想法:

  1. 我是否需要设置它以便将样式表复制到 public/assets 文件夹或其他东西?在production.rb中有设置吗? (我觉得默认情况下rails应该已经这样做了)

  2. 我是否需要在部署时手动预编译这些资产?

    帮助将不胜感激。谢谢!

  • 嗨,我有一个类似的问题。可能是production.rbyou\'没有提供静态文件(我可以看到您正在尝试直接从浏览器访问静态文件,而不是预编译的文件。您可以通过 production.rb 中的环境变量来完成, config.public_file_server.enabled = true

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


【解决方案1】:

我是否需要在部署时手动预编译这些资产?

是的。由于您现在没有使用 Node 工作流,而是直接依赖 Sprocket 和资产,因此您需要在生产环境中进行预编译步骤。

【讨论】:

    【解决方案2】:

    @stellenberger 是对的,值得称赞。就我而言,他们为静态资产启用公共文件服务器的解决方案为我解决了这个问题,并立即开始为公共提供 css 资产。我已经在预编译,只是没有提供服务。我在 ALB 后面的 AWS 中的 EC2 上使用 Rails docker 容器,并且没有本地 NGINX,因此默认假设不适合我的场景,需要更改。

    config/environments/production.rb 文件已经提供了一个环境变量,如果存在,它将打开公共服务器,称为 RAILS_SERVE_STATIC_FILES,因此您需要做的就是在构建或部署过程中设置该环境变量。由于它是存在性检查,因此任何值都是真实的,因为 var 存在性就是被检查的全部。

    或者,您也可以设置

    # config/environments/production.rb
    config.public_file_server.enabled = true
    

    在文件中而不是使用 ENV var,但通常 ENV var 比硬编码的配置更好。

    就我而言,我将默认设置更改为

    # config/environments/production.rb
    config.public_file_server.enabled = ENV.fetch("RAILS_SERVE_STATIC_FILES") { true }
    

    这样我的默认值为 true 并在不设置 var 的情况下启用,但如果需要,我仍然可以使用 var 禁用它。

    【讨论】:

      猜你喜欢
      • 2019-10-05
      • 1970-01-01
      • 2019-07-19
      • 1970-01-01
      • 1970-01-01
      • 2015-06-16
      • 2021-03-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多