Ruby - 如何在 .rb 文件中查找给定 Gem 的所有依赖项?

标签 ruby

如何找出 .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/

相关文章:

ruby - 如何在 Ruby 中使用 "sum"枚举

ruby-on-rails - 我将 Rails3 与 tinymce 一起使用。如何呈现用户关闭浏览器javascript然后输入xss?

ruby - 在 IRB 中四处闲逛/调试。 Monkey-patch 一个方法,然后 "undo"那改变,没有退出 IRB?

ruby - gem 安装 memcached 失败

ruby-on-rails - 如何在本地主机的工作 Rails 项目中从 SQLite 数据库更改为 PostgreSQL 数据库?

ruby - 非 Rails 应用程序中的 DatabaseCleaner 错误

ruby-on-rails - 如何收集当月包含的对象集合

ruby - 将 Unicode 中的阿拉伯语和日语文本按字母顺序排列?

ruby-on-rails - git push heroku master - 无法将我的网站推送到 heroku

ruby - tunnlr 等服务如何工作?