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