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
改为使用:path
,bundle install
每次都会愉快地使用最新的 SHA。我会继续使用bundle update
,但我认为这不一定是理想的解决方案。毕竟,在我的 Gemfile 中,我的范围不是:revision
,而是:branch
。感谢您的意见!
我知道这已经很老了,但是设置 :path
总是会更新,因为它是从目录加载的,而不是从 git 存储库或远程 gem 加载。 :path
非常适合在本地一起开发两个项目,但一旦开始协作就会崩溃。以上是关于Bundler:始终在 Gemfile 中使用最新版本的 git 分支的主要内容,如果未能解决你的问题,请参考以下文章
在开发过程中如何配置 Bundler/Gemfile 以使用不同的 gem 源?
Bundler:您尝试在更改 Gemfile 后以部署模式安装
html Jekyll Casts - Gems,Gemfile和Bundler
您想告诉我为啥即使我将 bundler 更新为“2.2.21”,Gemfile.lock 中的 bundler 版本仍然是“2.2.16”吗?