gpt4 book ai didi

ruby - 使用 Bundler 解析 Gemfile.lock

转载 作者:数据小太阳 更新时间:2023-10-29 07:55:10 26 4
gpt4 key购买 nike

基本上,我正在尝试构建一个 gem,当某些依赖项已过时时,它会执行某种形式的测试失败。在测试框架中,我可以轻松地将 Gem 中的废话 stub ,以便 Gem.loaded_specs("foo") 返回 gem foo 的规范。我正在寻找的是一种提供夹具 Gemfile 然后解析锁定文件的方法。

当我使用 Gem.loaded_specs 时,它不知何故神奇地知道要使用哪个 Gemfile,我如何为它提供不同的 gemfile(即:我的夹具)?

我知道有人提到“使用 bundler ”,这是有道理的,但在我的 gem 代码中,我这样做了:

gem_here = Gem.loaded_specs[gem_name]
gem_here.nil? ? :not_in_bundle : gem_here.version.to_s

我需要使用我的 fixture Gemfile 而不是当前项目的 gemfile 来完成这项工作。

这有什么意义吗?抱歉,如果这含糊不清。

注意:我并没有尝试通过 CLI 执行此操作。如果可以的话,我想使用编程(即:ruby api)方法。

编辑:

我现在要使用这种来源:

gem_here = Bundler.load.specs.detect do |specs|
specs.name == gem_name
end
gem_here.nil? ? :not_in_bundle : gem_here.version.to_s

最佳答案

解析你自己是不可取的,因为 Bundler 会做繁重的工作(解析,依赖解析)。

Bundler::LockfileParser.new(Bundler.read_file(Bundler.default_lockfile))

然后,使用 gemspecs 和 lockfile 访问所有运行时和/或开发依赖项。特定 gem 的运行时/开发部门可通过(当前未记录,需要贡献)RubyGems JSON API 获得 https://api.rubygems.org/api/v2/rubygems/rails/versions/5.0.0.1.json

注意:Bundler 2.0 Gemfile.lock -> gems.locked

关于ruby - 使用 Bundler 解析 Gemfile.lock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38800129/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com