获取所需宝石的列表

Getting a list of required gems

获取所需 gem 列表的最佳方法是什么?

我想要这些的交集,即当前加载的 gems(主要文件)的列表。但由于前者指向.so.rb等文件的完整路径,而后者指向.gem个文件的名称,因此匹配它们并取交集并非易事。

我想通了。

Gem::Specification
.select{|g| g.instance_variable_get(:@loaded)}
.map(&:name)

将 return 加载的宝石的名称。

我认为这可能对你有用:

Gem::Specification.select do |gem|
  $".find{|f| f.start_with?(gem.full_gem_path)}
end.map(&:name)

您可以使用

Gem.loaded_specs

它将 returns Hash 个 gem 名称(如 Strings)命名为 Gem::Specification 个对象。

参见Ruby documentation or the RubyGems documentation