2013-05-03 110 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的...