2015-04-30 91 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工作。