首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何更改云函数部署中使用的bundler版本?

如何更改云函数部署中使用的bundler版本?
EN

Stack Overflow用户
提问于 2021-03-10 13:37:54
回答 2查看 383关注 0票数 5

上下文

从几天前开始,云功能的部署就一直失败。

Gemfile

代码语言:javascript
运行
复制
source "https://rubygems.org"

ruby "~> 2.7.0"

git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }

gem "google-cloud-firestore"

部署脚本

代码语言:javascript
运行
复制
$ gcloud functions deploy my_func --region=us-central1 --memory=128MB --runtime=ruby27

(snip)

ERROR: (gcloud.functions.deploy) OperationError: code=3, message=Build failed: Fetching gem metadata from https://rubygems.org/..........
Resolving dependencies...
Bundler found conflicting requirements for the Ruby version:
  In Gemfile:
    Ruby (~> 2.7.0)

    google-cloud-firestore was resolved to 2.4.1, which depends on
      google-cloud-firestore-v1 (~> 0.0) was resolved to 0.4.0, which depends on
        gapic-common (~> 0.3) was resolved to 0.4.0, which depends on
google-protobuf (~> 3.15, >= 3.15.2) was resolved to 3.15.5, which
depends on
            Ruby (< 3.1.dev, >= 2.3)

    google-cloud-firestore was resolved to 2.4.1, which depends on
      google-cloud-firestore-v1 (~> 0.0) was resolved to 0.4.0, which depends on
        gapic-common (~> 0.3) was resolved to 0.4.0, which depends on
          grpc (~> 1.36) was resolved to 1.36.0, which depends on
            Ruby (< 3.1.dev, >= 2.4); Error ID: af32a539

为什么?

这是bundler的回归,因为邦德勒v2.2.8。

这是固定在邦德勒v2.2.10

因此,我希望bundler版本小于v2.2.8或大于v2.2.10。

云函数部署( gcloud functions deploy )自动运行bundle install,并使用安装在部署任务中的bundler

当前部署任务中的bundler版本是v2.2.9

验证码

Gemfile

代码语言:javascript
运行
复制
source "https://rubygems.org"

ruby "~> 2.7.0"

git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }


gem "bundler", "!= 2.2.8", "!= 2.2.9" 

部署脚本

代码语言:javascript
运行
复制
$ gcloud functions deploy my_func --region=us-central1 --memory=128MB --runtime=ruby27

(snip)

Resolving dependencies...
Bundler could not find compatible versions for gem "bundler":
  In Gemfile:
    bundler (!= 2.2.8, != 2.2.9)

  Current Bundler version:
    bundler (2.2.9)

主要学科

gcloud functions deploy没有什么理由来修改bundler版本.

https://cloud.google.com/sdk/gcloud/reference/functions/deploy?hl=ja

如何更改云函数部署中使用的bundler版本?

EN

Stack Overflow用户

发布于 2021-03-11 00:26:00

我也遇到了类似的问题,但是错误输出略有不同。一个共同之处是这句话:

代码语言:javascript
运行
复制
Bundler found conflicting requirements for the Ruby version:

在进行了一些挖掘和故障排除之后,我发现Google函数代表我们锁定了捆绑的平台。我不是红宝石专家,但我怀疑这会影响Gemfile和ruby版本一起读取信息的方式。

Google函数中的示例日志

代码语言:javascript
运行
复制
2021-03-10 13:13:01.764 PST
Step #4 - "builder": Done "bundle lock --add-platform x86_64-linux" 

解决方案:本地更新绑定程序(我更新到2.2.14)。删除Gemfile.lock文件并重新运行bundle install以生成Gemfile.lock。如果有任何需要修复的地方,这应该可以修复依赖关系。

最重要的是,它将更新Platforms部分在您的Gemfile.lock,以符合谷歌的期望。

在我的例子中,这个平台从Ruby更新到了x86_64-darwin-19

或者,如果可能的话,另一种方法可能只是使用bundle更新平台。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66565897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档