【发布时间】:2018-06-08 17:02:51
【问题描述】:
在 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
【问题讨论】:
-
为什么要阻止它?
Gemfile.lock旨在使您的 gem 环境可重现。如果它正在更新,则仅意味着您正在使用与以前不同的环境运行,例如如果您的其中一个 gem 更新为具有新的依赖项。 -
这是我最近与其他多个贡献者一起加入的一个项目。他们的系统信息未在此处列出。我有正确的 ruby 和 bundler 版本,所以我不想将此更改检查到 git 中。
-
这种情况一直发生在我身上,我只是尽量不去提交它们。不是一个很好的解决方案,但我习惯于在提交或推送之前检查我的更改,所以这不是问题。
-
您的问题到底是什么?如果您运行
bundle,那么您的Gemfile中指定的gem 将被安装,所有这些gem 的版本将指定您的Gemfile.lock。运行 rspec 不应该影响你的包的状态。 -
我添加了一个答案。有一个负责该行为的全局捆绑程序配置。无论运行 rspec 是否应该触及锁定文件,它都在意外更新它。
标签: ruby gemfile.lock