为什么我们需要Ruby中的Gemfile.lock?

时间:2016-07-26 15:38:03

标签: ruby rubygems bundler

Gemfile.lock是不是用于在依赖版本控制中延续不良做法?

即。开发人员不应该严格在Gemfile中设置依赖版本范围吗?

例如,如果我的Gemfile说我依赖gem A版本1.0.1或版本[1.0-2.0],为什么我需要.lock?

2 个答案:

答案 0 :(得分:5)

不,Gemfile.lock很有意义,对自动挑选宝石版本的概念至关重要。作为开发人员,您无需担心确切的版本号。您可以说“给我任何版本的宝石X适合所有其他宝石的所有其他版本”(只需说gem 'xyz'而无需任何进一步的信息)。或者你可以告诉它保留在旧版本的gem(gem 'xyz', '~> 2.3.0')或其他任何内容的bug修复行中。

通过在Gemfile.lock中添加确切版本,您可以确保版本对所有开发人员(和环境)保持一致。您将升级到更新版本的gem的行为变为有意识(并且记录良好)的选择,而不是构建/部署过程的随机部分。

答案 1 :(得分:2)

why would I need the .lock?

to install exactly the same versions as all the other guys in the team. Or install in production the same versions that you use in development.

It might happen that a new version of some gem is released while you were collecting sign-offs for your release. You better be sure you install/load exactly the versions that you developed/tested with.