用捆绑器更新一个gem
我使用bundler来pipe理我的Rails应用程序中的依赖关系,并且我拥有一个包含在git存储库中的gem,如下所示:
gem 'gem-name', :git => 'path/to/my/gem.git'
为了更新这个gem,我执行bundle update
但它也更新了Gemfile中提到的所有gem。 那么更新一个特定的gem是什么命令?
在这里你可以find一个很好的解释之间的区别
更新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
您只需要在命令行中指定gem名称:
bundle update gem-name
看来,使用更新版本的bundler(> = 1.14),它是:
bundle update --conservative gem-name
我已经使用了bundle update --source
很长一段时间,但有一些情况下,它不工作。 幸运的是,有一个名为bundler-patch
的gem,其目的是解决这个缺点。
我还写了一篇关于如何使用bundler-patch
的简短博客文章 ,以及bundle update --source
不一致的原因。 此外,请务必查看chrismo 的post ,详细解释--source
选项的用途。
bundle update gem-name [--major|--patch|--minor]
这也适用于依赖关系。
bundler update --source gem-name
将更新Gemfile.lock中的修订哈希,您可以将其与该git分支的最后一个提交哈希(默认为主)进行比较。
GIT remote: git@github.com:organization/repo-name.git revision: c810f4a29547b60ca8106b7a6b9a9532c392c954
可以在github.com/organization/repo-name/commits/c810f4a2
find(我使用简写字符提交哈希的url)