检查Gemfile.lock是否与Gemfile匹配

时间:2013-05-03 11:38:34

标签: ruby bundler

我想编写一个单元测试来检查我的项目中的Gemfile.lock是否与Gemfile匹配,以防我在提交之前忘记调用bundle

bundle命令(或其他方法)是否有选项可以检查?

请注意bundle check不适合此目的。它检查Gemfile中的所有gem是否都安装在本地系统上,但它不检查Gemfile.lock。因此,即使bundle install --deployment在开发计算机或CI中成功,服务器上的bundle check命令也会失败。

3 个答案:

答案 0 :(得分:3)

使用bundle check命令

  

检查在本地计算机上搜索所请求的每个宝石   的Gemfile。如果找到所有宝石,Bundler会打印成功消息   退出状态为0.如果不是,则列出第一个缺失的宝石   Bundler退出状态1。

答案 1 :(得分:3)

尝试:

cp Gemfile.lock Gemfile.lock.orig
bundle install
diff Gemfile.lock Gemfile.lock.orig && echo "Gemfile.lock matches Gemfile"

答案 2 :(得分:0)

Gemfile通常与Gemfile.lock becoz匹配,Bunder将解析Gem的所有依赖项,并将它们以树形方式置于Gem的名称下。此外,Gemfile.lock的目的只是解决版本号和其他依赖关系,以防在Bunder在bundle安装期间发现许多兼容的gems时可能出现的任何冲突。

执行bundle update命令时,将删除Gemfile.lock并生成一个带有新依赖项的新Gemfile.lock ...