用bundler更新一个gem

时间:2012-06-29 13:57:03

标签: ruby rubygems bundler

我使用bundler管理我的rails应用程序中的依赖项,并且我在git存储库中托管了一个gem,如下所示:

gem 'gem-name', :git => 'path/to/my/gem.git'

要更新此gem,我执行bundle update但它也会更新Gemfile中提到的所有gem。那么更新一个特定宝石的命令是什么?

8 个答案:

答案 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更新到特定版本:

  1. 更改Gemfile中gem的版本
  2. 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