有时我想运行捆绑更新但只是为了查看哪些宝石需要更新。我不一定要处理与更新所有问题相关的问题,但我想快速检查以了解最新技术水平。
有没有办法简单地让Bundler列出需要与我当前正在运行的版本一起更新(理想情况)的宝石,以及最新和最好的版本?
答案 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