如何解决Rails:为不同的操作系统处理不同的 gem 版本
我的 Rails 6 项目使用了一些安装 grpc
gem 的 gem。在我的 Gemfile.lock 中,gem 是这样安装的:
grpc (1.32.0)
google-protobuf (~> 3.13)
googleapis-common-protos-types (~> 1.0)
团队中的一个人有一台 Mac。当它们运行 bundle install
时,除了上面的版本外,它还会安装 OS X 特定版本的 gem,因此 Gemfile.lock 将如下所示:
grpc (1.32.0)
google-protobuf (~> 3.13)
googleapis-common-protos-types (~> 1.0)
grpc (1.32.0-universal-darwin)
google-protobuf (~> 3.13)
googleapis-common-protos-types (~> 1.0)
其他 Gemfile 信息:
PLATFORMS
ruby
RUBY VERSION
ruby 2.5.7p206
BUNDLED WITH
2.2.1
我的本地和生产服务器运行 Linux。当我尝试在我的本地环境中使用 Gemfile.lock 运行 bundle install
时,bundle install
退出并显示 Killed
消息,大概是因为 gem 与我的操作系统不兼容。>
我试过像这样直接将 gem 添加到我的 Gemfile 中:
gem 'grpc','1.32.0'
但这似乎只是有时有效,很奇怪。如何更新 Gemfile 以不安装 OS X 版本的 gem 而是使用基本版本?
解决方法
如果有人遇到这种情况。这是一个已知错误,已在捆绑程序版本 v2.2.11
来自:How to change the version of bundler used in Cloud Functions deployment?
这是 bundler 自 v2.2.8 以来的回归。 https://github.com/rubygems/rubygems/issues/4366
修复在这里:https://github.com/rubygems/rubygems/pull/3655
,我在 Mac 上进行了测试:macOS 10.15.7
、Ruby 2.7.2
、bundler 2.1.4
# Gemfile
gem 'grpc'
# Gemfile.lock
grpc (1.35.0)
google-protobuf (~> 3.14)
googleapis-common-protos-types (~> 1.0)
# bundle install log
Fetching grpc 1.35.0 (universal-darwin)
Installing grpc 1.35.0 (universal-darwin)
我在生成的 grpc (1.35.0-universal-darwin)
中没有 Gemfile.lock
。
从安装日志来看,我的bundler
版本会根据操作系统版本选择合适的版本,所以你不能通过Gemfile
来控制它。
很少有可能的解决方案是:
-
您使用 Mac 的同事可以尝试更新
bundler
,如果他们使用旧版本的bundler
。 -
从
grpc (1.35.0-universal-darwin)
中删除Gemfile.lock
相关代码,并告诉使用 Mac 的同事不要再次将其提交给 git(如果解决方案 1 不起作用)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。