You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails 7应用部署Google Cloud App Engine失败,求助修改部署步骤

解决Rails 7部署到App Engine时的Bundler平台不兼容问题

快速解决方法(本地预处理)

直接在本地项目根目录执行以下命令,更新Gemfile.lock后再部署:

bundle lock --add-platform x86_64-linux

提交更新后的Gemfile.lock到版本控制(如果使用Git),然后重新运行:

gcloud app deploy

彻底解决(自定义构建流程,同时修复Bundler过时参数警告)

报错中还提到--deployment和--without参数已过时,可通过自定义Cloud Build流程替换默认构建步骤:

  1. 在项目根目录创建cloudbuild.yaml文件,写入以下内容:
steps:
- name: 'gcr.io/cloud-builders/ruby'
  args: ['bundle', 'config', 'set', '--local', 'deployment', 'true']
- name: 'gcr.io/cloud-builders/ruby'
  args: ['bundle', 'config', 'set', '--local', 'without', 'development test']
- name: 'gcr.io/cloud-builders/ruby'
  args: ['bundle', 'lock', '--add-platform', 'x86_64-linux']
- name: 'gcr.io/cloud-builders/ruby'
  args: ['bundle', 'install']
- name: 'gcr.io/cloud-builders/docker'
  args: ['build', '-t', 'gcr.io/$PROJECT_ID/rails-app', '.']
images:
- 'gcr.io/$PROJECT_ID/rails-app'
  1. 使用自定义构建文件执行部署:
gcloud app deploy --cloud-build-file=cloudbuild.yaml

问题原因

  • 你的Gemfile.lock是在macOS(x86_64-darwin-23)环境生成的,仅包含该平台的依赖信息,但App Engine的构建环境是Linux(x86_64-linux),导致依赖不兼容。
  • Bundler新版本已弃用--deployment和--without命令行参数,要求通过bundle config set设置本地配置,避免跨调用的状态依赖。

内容的提问来源于stack exchange,提问作者Zack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 04:10:24