如何找出 .rb 文件中给定 Gem 的所有依赖项 无需依赖 system() 或类似的外部调用?
考虑这个项目:
https://rubygems.org/gems/diamond_shell
它有大约 20 - 25 个依赖项。
我需要遍历所有链接上的所有依赖项 依赖项也是如此,并用所有这些依赖项填充一个数组。
编辑:感谢您的回答。
最佳答案
您可以从 lib/rubygems/commands/dependency_command.rb
中提取代码。这是我制作的一个简单方法。
require 'rubygems/commands/dependency_command'
def get_dependencies name, local = true
cmd = Gem::Commands::DependencyCommand.new
dependency = cmd.gem_dependency name, nil, nil
specs =
if local
dependency.matching_specs.uniq.sort
else
cmd.fetch_remote_specs(dependency).uniq.sort
end
dependencies = []
specs.each do |spec|
dependencies.concat spec.dependencies.sort_by { |dep| dep.name }.map { |dep| [dep.name, dep.requirement] }
end
dependencies
end
puts get_dependencies('diamond_shell', false)
关于Ruby - 如何在 .rb 文件中查找给定 Gem 的所有依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24169394/