2015-02-10 55 views
1

獲取所需寶石列表的最佳方式是什麼?獲取所需寶石列表

  • 僞變量$"(裝載功能)給加載的所有文件,其中一些是由寶石內部加載文件的列表,以及其它的是加載非寶石文件。
  • Gem::Specification.map(&:name)給出系統上安裝的所有寶石,包括當時未加載的寶石。

我想要這些,即在此刻加載的寶石(主文件)列表的交集。但是由於前者指向文件的完整路徑,如.so,.rb,而後者指向的文件名稱爲.gem,匹配它們並取交點並不是微不足道的。

回答

1

我想通了。

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

將返回加載的寶石的名稱。

1

我想,這可能會爲你做的伎倆:

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