Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以阻止Bundler将RUBY版本添加到Gemfile.lock吗_Ruby_Bundler - Fatal编程技术网

我可以阻止Bundler将RUBY版本添加到Gemfile.lock吗

我可以阻止Bundler将RUBY版本添加到Gemfile.lock吗,ruby,bundler,Ruby,Bundler,每次我在命令行上运行任何gem命令时,Bundler都坚持触摸我的Gemfile.lock文件以添加此行: RUBY VERSION ruby 2.2.2p95 我不想把它提交给我们的存储库,因为这意味着每一个使用不同补丁级别Ruby 2.2.2的开发人员都将与我展开一场提交战。(我已经接受了与bundle_with行类似的问题。)但我不能部署,除非我提交该行,因为我们的部署通过一个rake任务运行,并运行deploy leads Bundler来添加这个块,因此部署过程说,“等等!你的

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

RUBY VERSION
   ruby 2.2.2p95
我不想把它提交给我们的存储库,因为这意味着每一个使用不同补丁级别Ruby 2.2.2的开发人员都将与我展开一场提交战。(我已经接受了与
bundle_with
行类似的问题。)但我不能部署,除非我提交该行,因为我们的部署通过一个rake任务运行,并运行deploy leads Bundler来添加这个块,因此部署过程说,“等等!你的工作树很脏!您可能正在部署未完成的更改!!!!1.“(好吧,不是字面意思,但你明白了。)

我能告诉Bundler把
RUBY版本
(理想情况下,
捆绑在一起)从
Gemfile.lock
中退出,这样我们就不必跳这种荒谬的舞蹈了吗


(似乎是同一个问题,但没有答案,natch。)

如果您使用的是某种版本控制,如Git,则可以将Gemfile.lock添加到.gitignore文件中


通过这种方式,任何时候你推进一个新的更改,你都不会推进你的Gemfile.lock。特别是因为其他开发人员不需要它——一旦他们运行bundle,bundle将在完成时创建一个新的Gemfile.lock。

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

从2.1.0开始,Ruby对于给定版本不再有多个补丁级别的版本。请参阅

2.2.2p95是2.2.2中唯一一个将发布的补丁级别。“p95”只是意味着自2.2.0以来已经有95次提交


由于您的整个团队都将使用2.2.2版本,因此将其保留在Gemfile.lock中不会造成任何问题。(只要每个人都将Bundler更新为执行此操作的版本。否则,在添加和删除ruby版本时仍会有冲突。)

不,不能删除它,至少在版本中是这样的当我写这篇文章时,绑定器的电流


此块是Bundler::Definition中添加的。如果锁定了\u ruby\u版本,则它包装的唯一条件是
,而
锁定的\u ruby\u版本
是一个返回现有锁定文件中定义的版本(
Gemfile.lock
)的方法或者系统Ruby-Bundler非常努力地避免让
locked\u Ruby\u version
返回错误的值。

Gemfile.lock的全部目的是根据Gemfile中指定的要求锁定确切的依赖版本。如果您想要一个可复制的环境,提交Gemfile.lock是非常必要的从git存储库中删除de>Gemfile.lock
不是一个选项。事实上,我们确实希望团队中的所有开发人员都使用项目中所有gem的相同版本。但事实证明,我们无论如何都会遇到提交战,不是针对Ruby版本,而是针对Bundler添加和删除此块的不同版本。sigh@pjmorse我觉得很好d允许所有团队成员拥有相同的绑定器版本。如果需要锁定gem,为什么不锁定Bundler?@FranklinYu问得好。我认为,因为绑定器是开发人员工具,而不是应用程序的直接依赖项,所以锁定其版本不如锁定gem版本重要。(此外,如果您的团队正在处理多个应用程序,您需要在应用程序之间协调绑定器的锁定版本,这可能是一个拖累。您实际上是在向您的团队提交lockstep绑定器更新。)@pjmorse我实际上没有遇到多个应用程序的任何问题,因为旧Bundler可以完全解析新Bundler生成的
Gemfile.lock
。它实际上没有锁定,而是通知其他团队成员Bundler的新版本。它不会强制任何人升级,只是告诉他们“您没有在团队中使用最新版本”。如果没有任何成员或机器加入团队,它将保持该版本。@pjmorse事实上,我看到了,但Bundler团队似乎并不后悔这个决定。通常情况下,我的团队宁愿不与gem开发人员对抗,让我们的生活更轻松。