我们团队内的程序员用的电脑系统各不相同,有人用 windows,有人用 Mac,有人用 Ubuntu,我注意到 Gemfile.lock 中的 Platform 经常会变来变去。
尤其是创建一个 microservice 时,跑测试时必定会遇到一个问题。
Your bundle only supports platforms ["x86_64-darwin-19"] but your local
platform is x86_64-linux. Add the current platform to the lockfile with
`bundle lock --add-platform x86_64-linux` and try again.
引起这个问题的原因:
Gemfile.lock 中这段代码是什么意思呢?
为什么 Bundler 要创建这个声明?
这个声明是为了解决什么问题?
是与可执行文件有关系吗?
PLATFORMS
ruby
x86_64-darwin-19
猜测 1: 某些 gem 自带二进制可执行文件,只能在某个平台运行。
猜测 2: Platform 是指定支持的 Ruby 解析器
。
https://www.moncefbelyamani.com/understanding-the-gemfile-lock-file/#platforms
https://bundler.io/man/gemfile.5.html#PLATFORMS
https://github.com/rubygems/rubygems/issues/4269#issuecomment-758564690