Rails中“Gemfile.lock”的目的是什么? 我一直在寻找,但找不到满意的答案。
答案 0 :(得分:26)
您应该阅读bundler
gem:http://gembundler.com/
THE GEMFILE.LOCK
当您运行bundle install时,Bundler将保留全名和 您使用的所有宝石的版本(包括宝石的依赖项) 在Gemfile(5)中指定)到一个名为Gemfile.lock的文件中。
Bundler在所有后续捆绑安装调用中使用此文件, 这保证你总是使用相同的代码,即使你的 应用程序跨机器移动。
由于依赖解析的工作方式,即使看起来很小 更改(例如,更新到依赖关系的点发布 你的Gemfile(5)中的gem可以导致完全不同的宝石 需要满足所有依赖关系。
因此,您应该将Gemfile.lock检查到版本控制中。 如果不这样做,则每台机器都会检出您的存储库 (包括您的生产服务器)将解析所有依赖项 再次,这将导致不同版本的第三方代码 如果Gemfile(5)中的任何宝石或其任何宝石被使用 依赖关系已更新。
答案 1 :(得分:6)
Gemfile.lock
可确保您应用中的其他开发人员以及您的部署环境使用与您刚刚安装的完全相同的第三方代码。