1
我需要從一個Rails應用程序中獲得寶石的當前工作目錄。如何從Ruby中使用bundler或Rails獲取gem的位置?
我目前使用
`bundle show foo`.strip
這在我的環境中工作的偉大,但:
- 是緩慢的,因爲它需要加載一個殼
- ,當有人試圖運行它可能會打破應用程序在Windows或在JRuby或者在不同的紅寶石比用於啓動應用程序
所以我想要一個方法來做到這一點,而不需要調用子shell。
的捆紮機的RDOC一直沒有幫助。您曾經能夠從Rails 2中獲取這類信息,但看起來Rails 3讓Bundler能夠處理它。
這不是很漂亮,但基本的思路應該工作。一個問題是許多寶石在他們的名字中有「主動記錄」,所以我需要一個完全匹配。在我的情況下,活動記錄顯示爲.../gems/activerecord-3.2.8/lib。我可以指望以/開頭的名字並以 - 結尾嗎?反斜槓可能嗎?寶石是否有可能未版本控制?我現在使用'/ [\/\\] activerecord [\/\\ - - ] /'。你能想到任何其他可能的邊框字符嗎? –
@BryanLarsen我已經更新了我的答案。請參閱**另一種方法**。基於寶石的名字。 – jdoe
「另一種方法」應該是一個鏈接嗎? –