我使用bundler管理我的rails应用程序中的依赖项,并且我在git存储库中托管了一个gem,如下所示:
gem 'gem-name', :git => 'path/to/my/gem.git'
要更新此gem,我执行bundle update
但它也会更新Gemfile中提到的所有gem。那么更新一个特定宝石的命令是什么?
答案 0 :(得分:310)
Here你可以找到关于
之间区别的一个很好的解释更新gem和依赖项:
bundle update gem-name
或强>
专门更新gem:
bundle update --source gem-name
以及可能的副作用的一些很好的例子。
正如@Tim的回答所说,截至Bundler 1.14,官方支持的方式是bundle update --conservative gem-name
。
答案 1 :(得分:182)
执行此操作的方法是运行以下命令:
bundle update --source gem-name
答案 2 :(得分:23)
您只需在命令行中指定gem名称:
bundle update gem-name
答案 3 :(得分:20)
看来,对于较新版本的bundler(> = 1.14),它是:
bundle update --conservative gem-name
答案 4 :(得分:4)
perform_in
这也适用于依赖项。
答案 5 :(得分:2)
我自己使用bundle update --source
很长一段时间,但有些情况下它不起作用。幸运的是,有一个名为bundler-patch
的宝石,其目标是解决这个缺点。
我还写了一篇关于如何使用bundler-patch
以及为什么bundle update --source
不能始终如一地工作的简短blog post。另外,请务必查看chrismo的a post,其中详细说明--source
选项的作用。
答案 6 :(得分: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字符提交哈希作为网址)
答案 7 :(得分:0)
如果要将单个gem更新到特定版本:
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