用捆绑器更新一颗宝石


233

我使用捆绑程序来管理Rails应用程序中的依赖关系,并且在git存储库中托管了一个gem,如下所示:

gem 'gem-name', :git => 'path/to/my/gem.git'

要更新此gem,我执行了,bundle update但是它也更新了Gemfile中提到的所有gem。那么仅更新一个特定gem的命令是什么?

Answers:


354

您可以在这里找到关于

更新gem和依赖项:

bundle update gem-name 

要么

专门更新gem:

bundle update --source gem-name

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

更新资料

就像@Tim的回答所说,从Bundler 1.14开始,官方支持的方法是with bundle update --conservative gem-name


19
小心,“更新gem和依赖项”意味着如果它是依赖项并且您可能不希望这样做,则更新rails本身。--source将仅更新指定为参数的gem。因此,在大多数情况下会更好。
2015年

如何指定版本?
奥尚Wisumperuma

1
@OshanWisumperuma在运行这些捆绑包命令之前,在Gemfile或Gemfile.lock中指定版本
Harry Wood

185

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

bundle update --source gem-name

3
这正是我所需要的,我有一个私有gem,在对私有gem进行了一些更改之后,只需要更新gem本身而不更新依赖项即可。
我是青蛙龙

30

看来,对于较新版本的捆绑程序(> = 1.14),它是:

bundle update --conservative gem-name

注意:此命令将更新一个不依赖它的gem
mmike

24

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

bundle update gem-name

1
奇怪。那就是bundle help update要做的。您正在使用哪个版本的捆绑器?
布兰丹

40
bundle update gem-name将更新gem及其“任何依赖项”。
yaka

5

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

这也适用于依赖项。


1
有没有办法将其更新到特定版本?的--major--minor--patch标志自动升级到最新版本的可能。
user2490003 '19

2

我已经使用bundle update --source了很长时间,但是在某些情况下它不起作用。幸运的是,有一个宝石bundler-patch可以解决这个缺点。

我还写了一篇简短的博客文章,介绍如何使用bundler-patch以及为何bundle update --source无法始终如一地工作。另外,请务必查看chrismo 的帖子,其中详细说明了该--source选项的作用。


0

bundler update --source gem-name 将更新Gemfile.lock中的修订哈希,您可以将其与该git分支(默认为master)的最后一次提交哈希进行比较。

GIT remote: git@github.com:organization/repo-name.git revision: c810f4a29547b60ca8106b7a6b9a9532c392c954

可以在以下位置找到github.com/organization/repo-name/commits/c810f4a2(我使用了速记8字符提交哈希作为URL)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.