运行bundle或rspec会为Gemfile.lock添加一行

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (42)

在Ruby项目中运行各种命令(例如bundle和rspec)之后,Gemfile.lock会更新并x86_64-darwin-17添加到PLATFORMS标题中。为什么会这样?我该怎样预防呢?

运行 gem env给出了这个有趣的背景:

○ → gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 2.7.6
  - RUBY VERSION: 2.5.1 (2018-03-29 patchlevel 57) [x86_64-darwin17]
  #...etc  
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-17
提问于
用户回答回答于

这是由全局捆绑器配置引起的。设置为false会停止该行为。

specific_platform(BUNDLE_SPECIFIC_PLATFORM):允许bundler解析特定的运行平台并将其存储在lockfile中,而不是仅使用通用平台。特定平台是Gem :: Platform.local报告的精确平台三元组,例如x86_64-darwin-16或universal-java-1.8。另一方面,通用平台是诸如ruby,mswin或java之类的平台。在此示例中,x86_64-darwin-16将映射到ruby和universal-java-1.8到java。

用户回答回答于

如果要在不更新Gemfile.lock的情况下安装依赖项,只需使用--frozen选项。 例如 捆绑 - 冷冻。 这将正常安装依赖项,除非不更新Gemfile.lock

编辑

如果这不是一个好的解决方案,最好的办法是将Gemfile.lock添加到特定于本地仓库的.gitignore。 您可以根据此答案在your_repo / .git / info / exclude中创建一个

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动