2011-09-01 74 views
6

有時我想運行軟件包更新,但僅查看哪些寶石需要更新。我不一定要處理與更新所有這些問題相關的問題,但我想快速檢查以瞭解最新技術狀態。如何預覽「捆綁更新」將進行的更新?

有沒有辦法簡單地讓Bundler列出需要一起更新(理想情況下)與我正在運行的版本和什麼是最新最好的版本的寶石?

回答

3

我嘗試這樣做:

> gem install bundle_outdated 
> bundle-outdated 
Finding outdated gems.. 

Newer versions found for: 
    rails (3.1.0 > 3.0.0) 
    haml (3.1.2 > 3.0.0) 
    rspec-rails (2.6.1 > 2.0.1) 

Lock bundle to these versions by putting the following in your Gemfile: 
    gem 'rails', '3.1.0' 
    gem 'haml', '3.1.2' 
    gem 'rspec-rails', '2.6.1' 

You may try to update non-specific dependencies via: 
    $ bundle update haml rspec-rails 

Handwaving specifications: 
    haml: >= 3.0.0 
    rspec-rails: >= 2.0.1 

另一種選擇:

> gem install gem-outdated 
> gem outdated 
+0

非常有幫助 - 捆綁過時看起來像我之後,ty –

+0

做這個答案建議之前要非常小心。首先;捆綁過時不考慮版本依賴性要求。這意味着即使您的Gemfile中有您的寶石的特定版本,它也會顯示爲新的。其次; ** bundle update gemname **命令更新gem的所有依賴關係。這意味着如果「gemname」依賴於rails,則可能會出現新的rails版本。 (haml在這個例子中給出了)。請參閱下面的答案。 –

0

沒有一種方法可以直接與bundler做到這一點,但只要您使用的是VCS,那麼您始終可以恢復Gemfile.lock以恢復更新所做的更改,或者區分文件以查看哪些更改已經制成。看到這個similar question

+0

謝謝你 - 使用捆綁過時的寶石解決它 –

14

現在有一種方式直接與打捆做到這一點。你不需要安裝任何額外的寶石。

bundle outdated 

將返回這樣

Outdated gems included in the bundle: 
    * acts-as-taggable-on (2.4.1 > 2.3.3) 
    * addressable (2.3.4 > 2.3.3) 
    * arel (4.0.0 > 3.0.2) 
    * better_errors (0.8.0 > 0.7.2) 
    * builder (3.2.0 > 3.0.4) 
    * capybara (2.1.0 > 2.0.3) 
    * chunky_png (1.2.8 > 1.2.7) 
    * codemirror-rails (3.12 > 3.02) 
    * coffee-rails (4.0.0 > 3.2.2) 
    ..... 
5

的東西,因爲谷歌的搜索打這個頁面和提供的答案有一個需要注意一些要點,我將添加另一個答案。

如果你想看到哪些更新發布你的寶石,以「版本依賴性要求在你的Gemfile」考慮,使用:

bundle outdated --strict 

如果你不想拿版本依賴考慮到,只需使用其他答案中指定的bundle outdated即可。

其次,如果你想更新特定的寶石,使用:

bundle update --source gemname 

bundle update gemname更新寶石和所有依賴它可以讓你在一個爛攤子(甚至鐵軌被使用bundle update haml更新)。