用bundler更新一个gem

sai*_*lor 222 ruby rubygems bundler

我使用bundler来管理我的rails应用程序中的依赖项,并且我在git存储库中托管了一个gem,如下所示:

gem 'gem-name', :git => 'path/to/my/gem.git'
Run Code Online (Sandbox Code Playgroud)

为了更新这个gem,我执行bundle update但它也更新了Gemfile中提到的所有gem.那么更新一个特定宝石的命令是什么?

小智 335

在这里你可以找到一个很好的解释之间的区别

更新gem和依赖项:

bundle update gem-name 
Run Code Online (Sandbox Code Playgroud)

要么

专门更新宝石:

bundle update --source gem-name
Run Code Online (Sandbox Code Playgroud)

以及可能的副作用的一些很好的例子.

更新

正如@Tim的回答所说,从Bundler 1.14开始,官方支持的方式就是这样bundle update --conservative gem-name.

  • 要小心,"更新gem和依赖项"意味着如果它是一个依赖项而更新rails本身,你可能不希望这样.* - source*只会更新指定为参数的gem.所以在大多数情况下它更好. (16认同)

小智 185

执行此操作的方法是运行以下命令:

bundle update --source gem-name
Run Code Online (Sandbox Code Playgroud)

  • 这正是我需要的,我有一个私有宝石,只需要更新gem本身而不更新依赖关系后我对私有gem进行了一些更改. (3认同)

Tim*_*Tim 24

看来,对于更新版本的bundler(> = 1.14),它是:

bundle update --conservative gem-name
Run Code Online (Sandbox Code Playgroud)


Bra*_*dan 23

您只需在命令行上指定gem名称:

bundle update gem-name
Run Code Online (Sandbox Code Playgroud)

  • `bundle update gem-name`将更新gem和"它的任何依赖". (40认同)

Nik*_*iko 6

bundle update gem-name [--major|--patch|--minor]

这也适用于依赖项。

  • 有没有办法更新到特定版本?`--major`、`--minor` 和 `--patch` 标志会自动将其升级到最新的版本。 (2认同)