Bundler:始终在 Gemfile 中使用最新版本的 git 分支

Posted

技术标签:

【中文标题】Bundler:始终在 Gemfile 中使用最新版本的 git 分支【英文标题】:Bundler: always use latest revision of git branch in Gemfile 【发布时间】:2012-01-09 14:15:11 【问题描述】:

我有一个带有私有 git 存储库的 Gemfile,格式如下:

gem 'magic_beans', :git => "git@git.example.com:magic_beans.git', :branch => 'super_beans'

当我bundle install 时,Gemfile.lock 将其锁定到特定的 SHA 修订版。

我可以让 bundler 始终检查和使用最新的 SHA 提交和/或更新 Gemfile.lock 吗?请注意,当我将更新推送到 super_beans 分支时,我并没有修改 gem 版本。

理想情况下,每次我运行 bundle 时,它都会检查上游 git repo 是否有更新的 SHA 版本的分支。

【问题讨论】:

【参考方案1】:

删除 .gemlock 对我有用:/

【讨论】:

【参考方案2】:

在搜索了文档之后,我终于找到了这样做的神奇方法:

bundle update magic_beans --source magic_beans

也就是只更新magic_beans gem,不接触其他锁定的gem。关于这个的文档是:http://bundler.io/man/bundle-update.1.html

【讨论】:

第一个magic_beans 不是必须的。你可以做bundle update --source magic_beans【参考方案3】:

您可以运行 bundle update 将所有或特定的 gem 更新到最新的可用版本,如 docs 中所述。

会有帮助吗?

【讨论】:

我猜如果app和gem repos都属于你,并且gem经历了很多小的变化,那么在主应用程序上进行提交以始终指向最新提交是很痛苦的.【参考方案4】:

这不是打包程序的工作方式。 关键是允许对依赖项进行无缝版本控制。 (尤其是让您确切知道在任何给定时间部署的代码版本)。

如果想要最新版本,你应该运行。

bundle update magic_beans

这和你刚才说的功能完全一样

gem "rails"

不过,如果您有一系列特定的内容要更新,我建议您 然后添加一个自定义二进制文件(比如一个名为 bundle_update 的可执行文件)

#!/usr/bin/env bash
bundle install
bundle update magic_beans

然后,当您想更新这些内容时,只需发送./bundle_update

【讨论】:

如果我将:git 改为使用:pathbundle install 每次都会愉快地使用最新的 SHA。我会继续使用bundle update,但我认为这不一定是理想的解决方案。毕竟,在我的 Gemfile 中,我的范围不是:revision,而是:branch。感谢您的意见! 我知道这已经很老了,但是设置 :path 总是会更新,因为它是从目录加载的,而不是从 git 存储库或远程 gem 加载。 :path 非常适合在本地一起开发两个项目,但一旦开始协作就会崩溃。

以上是关于Bundler:始终在 Gemfile 中使用最新版本的 git 分支的主要内容,如果未能解决你的问题,请参考以下文章

在开发过程中如何配置 Bundler/Gemfile 以使用不同的 gem 源?

Bundler:您尝试在更改 Gemfile 后以部署模式安装

Gemfile 中的 Ruby Bundler 多个源

html Jekyll Casts - Gems,Gemfile和Bundler

您想告诉我为啥即使我将 bundler 更新为“2.2.21”,Gemfile.lock 中的 bundler 版本仍然是“2.2.16”吗?

找不到 Gemfile