2012-07-06 16 views

回答

5

我更喜歡將所有寶石鎖定到生產中的特定版本。考慮到可能有更新的版本會破壞與其他寶石的兼容性或者棄用一些API,您希望100%確定您在部署時不會因應寶石不一致而出現令人驚訝的破壞應用程序。更新寶石應該只在本地進行開發,通過更新它們的Gemfile條目並針對其餘代碼和庫測試每個新版本。

+0

另外,有時也有相反的情況需要獲取源代碼中的最新版本,因爲它包含編號版本中不可用的緊急修復程序。 (在某個時間發生了will_paginate) – prusswan 2012-07-06 13:36:31

2

通常情況下,除非有指示(寶石作者或因不兼容的用戶反饋),否則不需要。有時候,你可能會使用某些寶石的邊緣的版本,所以它不會怎樣都無所謂:因爲當前工作寶石的版本在Gemfile.lock已經指定

# Bundle edge Rails instead: 
gem 'rails', :git => 'git://github.com/rails/rails.git' 
gem 'arel', :git => 'git://github.com/rails/arel.git' 
gem "rack", :git => "git://github.com/rack/rack.git" 
1

我不認爲你應該指定每顆寶石的版本, 。

此外,如果你這樣做,bundle update命令將是無用的。你應該可以使用這個命令來更新寶石。如果測試通過並且您的應用程序繼續正常工作,只需提交新的Gemfile.lock

+0

'Gemfile.lock'完全由'Gemfile'中指定的規則和最後一個'bundle update'生成,因此無論指定或不指定版本,都只需要考慮'Gemfile'。 – prusswan 2012-07-06 13:34:23

+0

這就是我所說的...你不應該指定每個寶石的版本,所以'捆綁更新'可以更新其中的一些 – 2012-07-06 14:48:27

相關問題