我有两个独立的Ruby安装(一个用于Chef,一个用于Sensu)。在Chef安装中,我想获得一个安装在Sensu ruby中的所有gem版本的列表。我知道两个安装在运行时的绝对路径。
我之前使用Gem::Specification::find_all_by_name
效果非常好,这是我正在寻找的那种方法,但它似乎只适用于当前正在执行的ruby ,并且似乎没有任何关于可重用性的概念。
一种方法是将gem list
与grep
一起使用并解析输出,但我真的不需要解决问题,我更喜欢红宝石解决方案。我也可以自己检查文件系统并重新创建Gem::Specification
的逻辑,但这并不比炮轰好得多。
有没有办法在不重复解析逻辑的情况下将等效输出提供给Gem::Specification
?
答案 0 :(得分:0)
Gem::Specification
有一个名为dirs
的(全局)属性,允许您指定Gem::Specification
在搜索规范时将使用的路径数组。
请注意,它所期望的路径必须是"规范"的父文件夹,因此例如/opt/embedded/product/lib/specifications
将不起作用,但/opt/embedded/product/lib
将工作