Here 你可以找到一个很好的解释
更新 gem 和依赖项:
bundle update gem-name
或者
专门更新 gem:
bundle update --source gem-name
以及一些可能的副作用的好例子。
更新
正如@Tim 的回答所说,从 Bundler 1.14 开始,官方支持的方法是使用 bundle update --conservative gem-name
。
执行此操作的方法是运行以下命令:
bundle update --source gem-name
看来,对于较新版本的捆绑程序(> = 1.14),它是:
bundle update --conservative gem-name
您只需要在命令行上指定 gem 名称:
bundle update gem-name
bundle help update
所说的。您使用的是哪个版本的捆绑程序?
bundle update gem-name
将更新 gem 和“它的任何依赖项”。
bundle update gem-name [--major|--patch|--minor]
这也适用于依赖项。
--major
、--minor
和 --patch
标志会自动将其升级到可能的最新版本。
我自己使用 bundle update --source
已经很长时间了,但在某些情况下它不起作用。幸运的是,有一个名为 bundler-patch
的 gem 旨在解决这个缺点。
我还写了一篇简短的 blog post,介绍了如何使用 bundler-patch
以及为什么 bundle update --source
不能始终如一地工作。此外,请务必查看 chrismo 的 a post,其中详细解释了 --source
选项的作用。
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)
如果要将单个 gem 更新到特定版本:
在 Gemfile 包更新中更改 gem 的版本
> 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