【问题标题】:Google App Engine asset pipeline standard environmentGoogle App Engine 资产管道标准环境
【发布时间】:2019-07-17 05:06:00
【问题描述】:

当应用部署到标准(非灵活)环境时,是否可以在 Google App Engine 中使用 Ruby on Rails 资产管道?我知道在部署到灵活环境时会发生预编译,但我无法让它在标准环境中工作。

【问题讨论】:

  • 我也在努力让 Rails 在 GAE 标准中工作。总是缺少资产的问题。我尝试了很多不同的东西,但还没有运气。

标签: ruby-on-rails google-app-engine asset-pipeline


【解决方案1】:

问题在于app.yaml 的默认配置会阻止将关键文件上传到 GAE。

具体来说,skip_files 部分有一些默认设置会阻止所有点文件上传,包括 sprockets 清单文件:/public/assets/.sprockets-manifest-5y483543959430890.json。如果没有这个文件,Rails 会假设资产没有被预编译。

您需要使用不会阻止上传 sprockets 清单但仍会阻止 .git/* 之类的内容的内容覆盖默认的 skip_files 配置。

现在这对我有用,但我相信它可以进一步完善:

skip_files:
- ^(.*/)?#.*#$
- ^(.*/)?.*~$
- ^(.*/)?.*/RCS/.*$
- ^(.*/)?\.git/.*$

【讨论】:

  • 哇!有用。如果 Google 为他们的 Ruby 文档记录了 skip_files 部分,那就太好了。
【解决方案2】:

这是可能的。在此处查看完整文档:Ruby in the App Engine Standard Environment

请注意,Ruby 标准环境处于 Beta 阶段,因此请记住,它可能会随着时间的推移而改变。

【讨论】:

    【解决方案3】:

    您可以创建一个.gcloudignore 文件并为/public/assets 添加一行,而不是使用app.yaml 的skip_files 部分。如果此目录不存在,docs 会说:

    Ruby 运行时在部署期间执行 rake assets:precompile 以生成静态资源并设置 RAILS_SERVE_STATIC_FILES 环境变量以在生产中启用静态文件服务。

    【讨论】:

      猜你喜欢
      • 2018-03-12
      • 2018-07-01
      • 1970-01-01
      • 2016-09-26
      • 1970-01-01
      • 2017-09-22
      • 2018-03-29
      • 2020-11-23
      • 2020-08-27
      相关资源
      最近更新 更多