Gemfile 和 Gemfile.lock

为什么有了 Gemfile 文件还需要一个 Gemfile.lock 文件,我知道是为了在多种场合下保持 gem 版本一致,比如在开发和部署时,或者你有多台不同的开发机器,或者项目有多人开发。但是它到底是如何保持的,一直比较迷惑。下面简要记录一下:

首先,Gemfile 文件所列的 gem 只是项目依赖的一部分,gem 本身也有自己的依赖,不同的 gem 本身可能依赖了某一 gem 不同的版本,如何让这么多不同版本的依赖相安无事,不发生冲突,这就是 bundle 的发挥作用的时候了。bundle 不仅用来安装 gem,更重要的是还负责计算出不同 gem 的依赖版本,最终生成 Gemfile.lock 文件,该文件记录了确切的 gem 名称和版本号,以及他们所依赖的 gem 的名称和版本号。

第一次运行 bundle install 时自动生成 Gemfile.lock 文件。
以后每次运行 bundle install 时,如果 Gemfile 中的条目不变 bundle 就不会再次计算 gem 依赖版本号,直接根据 Gemfile.lock 检查和安装 gem。
如果出现依赖冲突时可以通过 bundle update 更新 Gemfile.lock。

这篇文章说的比较详细。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原地址 Gemfile是指定需要使用的哪些gem及其版本的地方;The Gemfile is where you ...
    朱小虎XiaohuZhu阅读 5,952评论 0 6
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,638评论 25 708
  • CocoaPods 是什么? CocoaPods 是一个负责管理 iOS 项目中第三方开源库的工具。CocoaPo...
    朝洋阅读 25,746评论 3 50
  • 我想,那时候的我们,是最好的我们。
    _Spring阅读 222评论 0 1
  • 不知你是否能告诉我,老是忘记父母的生日是一种什么样的体验,我只知道我已经忘记几次了,我已经真真切切的知道自己是个不...
    美丽的嘻嘻传说阅读 431评论 0 0