我可以阻止Bundler将RUBY VERSION添加到Gemfile.lock

时间:2016-03-30 18:05:18

标签: ruby bundler

每次我在命令行上运行任何gem命令时,Bundler都会坚持要触摸我的Gemfile.lock文件来添加这一行:

RUBY VERSION
   ruby 2.2.2p95

我不想将它提交到我们的存储库,因为这意味着使用不同补丁级别的Ruby 2.2.2的每个开发者都将与我进行一次提交战。 (我已经使用BUNDLED_WITH行解决了类似的问题。)但是除非我提交该行,否则我无法部署,因为我们的部署是通过rake任务运行的,运行部署导致Bundler添加此块,然后部署过程说,“等待!您的工作树很脏!您可能正在部署不完整的更改!!!! 1!”(好吧,不是字面意思,但你明白了。)

我可以告诉Bundler将RUBY VERSION(理想情况下,BUNDLED_WITH)退出Gemfile.lock,这样我们就不必做这种荒谬的舞蹈吗?

how to prevent bundler from adding platform info to Gemfile.lock似乎是同一个问题,但没有答案,自然。)

3 个答案:

答案 0 :(得分:8)

我不这么认为,但也许没关系:

从2.1.0开始,对于给定版本, Ruby不再具有多个补丁级别版本。请参阅How do version numbers work for MRI Ruby?

上的已接受答案

2.2.2p95是唯一将发布的2.2.2补丁级别。 'p95'仅表示自2.2.0以来已有95次提交。

因为你的整个团队无论如何都会在2.2.2上,所以不应该在你的Gemfile.lock中留下问题。 (只要每个人都将Bundler更新为执行此操作的版本。否则,添加和删除ruby版本时仍会存在冲突。)

答案 1 :(得分:0)

不,它至少在Bundler当前版本中无法删除。我写这篇文章。

此块添加了Bundler :: Definition的in the #to_lock method。它包含的唯一条件是if locked_ruby_versionlocked_ruby_version是一个方法,它返回现有锁文件(Gemfile.lock)中定义的版本或系统Ruby - Bundler尝试很难避免让locked_ruby_version返回假值。

答案 2 :(得分:-4)

如果您正在使用某种版本控制(如Git),则可以将Gemfile.lock添加到.gitignore文件中。

这样,无论何时推送新的更改,都不会推高你的Gemfile.lock。特别是因为其他开发人员不需要它 - 一旦他们运行bundle,bundle将在完成时创建一个新的Gemfile.lock。