我使用绑定器来管理我的rails应用程序中的依赖项,我有一个gem托管在git存储库中,包括如下:
gem 'gem-name', :git => 'path/to/my/gem.git'
为了更新这个gem,我执行了bundle update,但它也更新了Gemfile中提到的所有gem。那么仅仅更新一个特定宝石的命令是什么呢?
bundle update
你只需要在命令行中指定gem名称:
bundle update gem-name
具体操作方法如下:
bundle update --source gem-name
在这里你可以找到一个很好的解释之间的区别
更新gem和依赖项:
或
专门更新gem:
还有一些可能产生副作用的例子。
正如@Tim的回答所说,在Bundler 1.14中,官方支持的方法是bundle update --conservative gem-name。
bundle update --conservative gem-name
我自己已经使用bundle update --source很长一段时间了,但在某些情况下它不起作用。幸运的是,有一个名为bundler-patch的宝石,它的目标是修复这个缺点。
bundle update --source
bundler-patch
我还写了一个简短的博客,关于如何使用bundler-patch以及为什么bundle update --source不能始终工作。另外,一定要查看一篇文章 by chrismo,它详细解释了--source选项的作用。
--source
它似乎与较新的版本的捆绑器(>= 1.14)是:
bundle update gem-name [--major|--patch|--minor]
这也适用于依赖关系。
bundler update --source gem-name将更新Gemfile中的修订散列。锁定,你可以与git分支的最后一个提交哈希进行比较(默认为master)。
bundler update --source gem-name
可以在github.com/organization/repo-name/commits/c810f4a2找到(我使用了8个字符的url提交散列)
github.com/organization/repo-name/commits/c810f4a2
如果你想要更新一个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