2013-05-03 83 views
0

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

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

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

回答

2

尝试:

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

使用bundle check命令

检查搜索本地计算机对每个在 Gemfile中所要求的宝石。如果发现所有的宝石,如果没有,第一个丢失的宝石被列出, 捆扎机退出状态捆扎机打印一个成功的消息,并 退出时的状态0 1

0

的Gemfile中一般不列入匹配的的Gemfile .lock因为bunder将解决Gem的所有依赖关系,并将它们以树形方式放在Gem的名字下。此外,Gemfile.lock的目的只是为了解决版本号和其他依赖关系,以防Bunder在安装bundle时发现许多兼容的gem时可能出现的任何冲突。

当您执行包更新命令时,Gemfile.lock的被去除,并且用新的依赖生成一个新的Gemfile.lock的...