ruby 从具有特定版本的资源库中获取gem

biswetbf  于 2023-01-25  发布在  Ruby
关注(0)|答案(1)|浏览(155)

我正在尝试使用bundler从存储库中获取旧版本。
例如,在我的宝石文件我有:

...
gem "custom-metrics", "~> 0.14.0", git: "https://gitlab.custom.co/gems/custom-metrics.git"
...

这是正确地安装了0.14.0版本,然后我将0.14.1版本推送到了依赖项存储库中,它仍然是相同的,正如预期的那样。
在依赖项中,我将.gemspec文件中的版本设置为:

Gem::Specification.new do |spec|
  spec.name = "custom-metrics"
  spec.version = 0.14.0
  ...
end

如果我现在推送一个0.15.0版本,它将停止工作。在这种情况下,我必须指定ref:到以前的提交。所以看起来不是bundler不能安装该版本,而是它只查找最后一个MINOR版本中的版本(在这种情况下,它将在0.15.*中)
我找不到任何医生来证实我的假设。
〉我错过了什么吗?
〉是否可以指定一个版本并确保bundler总是能找到它?

eni9jsuy

eni9jsuy1#

当直接从git仓库加载gem时,Bundler会加载在ref或tag处定义的分支中找到的版本。
当您定义应该使用特定版本的gem时,Bundler将检查在存储库中找到的gem版本是否与该条件匹配。
因此,你可能不想直接从GitHub的主分支安装gem的最新版本,而是定义从特定的分支、标记或引用安装可能更容易管理。
来自Bundler文档的How to install gems from git repositories

相关问题