2015-04-30 89 views
0

我有两个孤立的Ruby安装(一个用于厨师,一个用于Sensu)。从Chef安装中,我想获得安装在Sensu ruby​​中的所有版本的gem列表。我知道运行时两种安装的绝对路径。从外部的红宝石安装获取宝石版本

我用Gem::Specification::find_all_by_name之前有很大的影响,这是那种方法我在寻找的,但似乎只对工作当前正在执行的红宝石,并且似乎没有有什么样的的可重用性概念。

一种方法是使用gem listgrep并解析输出,但我真的宁愿不必为解决问题而掏腰包,我更喜欢使用红宝石解决方案。我也可以自己检查文件系统并重新创建Gem::Specification的逻辑,但这并不比脱壳更好。

有没有一种方法可以得到等效输出到Gem::Specification而不用自己复制解析逻辑?

回答

0

Gem::Specification有一个名为dirs的(全局)属性,它允许您指定Gem::Specification在搜索规范时将使用的路径数组。

注意,路径,预计必须是“规范”的父文件夹,所以例如/opt/embedded/product/lib/specifications将无法​​正常工作,但/opt/embedded/product/lib工作。