如何预览“捆绑更新”所做的更新?

时间:2011-09-01 11:24:41

标签: ruby-on-rails gem bundle bundler

有时我想运行捆绑更新但只是为了查看哪些宝石需要更新。我不一定要处理与更新所有问题相关的问题,但我想快速检查以了解最新技术水平。

有没有办法简单地让Bundler列出需要与我当前正在运行的版本一起更新(理想情况)的宝石,以及最新和最好的版本?

4 个答案:

答案 0 :(得分:14)

现在有一种方法可以直接使用bundler来完成此操作。您无需安装任何额外的宝石。

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)
  .....

答案 1 :(得分:5)

由于谷歌搜索点击此页面并且提供的答案有一些需要注意的点,我将添加另一个答案。

如果您想查看为您的宝石发布了哪些更新,请考虑“Gemfile中的版本依赖性要求”,请使用:

bundle outdated --strict  

如果您不想考虑版本依赖性,只需使用其他答案中指定的bundle outdated

其次,如果您想更新特定的gem,请使用:

bundle update --source gemname

bundle update gemname更新了gem及其所有依赖项,这可能会让你陷入混乱(甚至使用bundle update haml来更新rails。)

答案 2 :(得分: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

答案 3 :(得分:0)

没有办法直接使用bundler执行此操作,但只要您使用的是VCS,那么您始终可以恢复Gemfile.lock以恢复更新所做的更改,或者对文件进行差异以查看哪些更改有已经成型。见similar question