268

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

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

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

4

8 回答 8

422

在这里你可以找到一个很好的解释

更新 gem 和依赖项:

bundle update gem-name 

或者

专门更新 gem:

bundle update --source gem-name

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

更新

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

于 2014-04-24T12:11:39.507 回答
194

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

bundle update --source gem-name
于 2013-03-06T11:35:05.027 回答
47

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

bundle update --conservative gem-name
于 2017-04-21T19:06:13.503 回答
23

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

bundle update gem-name
于 2012-06-29T13:59:23.877 回答
8

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

这也适用于依赖项。

于 2017-06-09T08:30:43.803 回答
2

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

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

于 2016-06-13T20:12:56.803 回答
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)

于 2017-09-08T10:51:52.170 回答
0

如果要将单个 gem 更新到特定版本:

  1. 在 Gemfile 中更改 gem 的版本
  2. bundle update
> ruby -v
ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-darwin19]
> gem -v
3.0.3
> bundle -v
Bundler version 2.1.4
于 2020-09-18T15:44:43.113 回答