2011-03-28 66 views
1

在Ruby菜譜食譜18.1,據說如何搜索Ruby代碼中的寶石,或者Gem :: RemoteInstaller去哪裏?

Gem::RemoteInstaller.new.search('rails') 

可以搜索遠程站點上的寶石,默認爲rubygems.org

,但我在紅寶石1.8.6試過,1.8.7和1.9.2,而這一切說

in `<main>': uninitialized constant Gem::RemoteInstaller (NameError) 

我已經嘗試過

require 'rubygems' 

甚至

require 'rubygems/remote_installer' 

是否有一種新的方式來使用Ruby內的Gem進行搜索?

(請不要給出答案,例如system("gem list rails")

回答

1

Gem::RemoteInstaller已經從RubyGems的,因爲1.0版本被刪除。這是前一段時間,如果你正在尋找設置了人與寶石的能力,他們可能沒有,我會強烈建議bundler(其實我覺得所有的Ruby項目應該使用它)http://gembundler.com

OK,你可以嘗試:

require 'rubygems' 
r = Gem::SpecFetcher.new 
r.suggest_gems_from_name('rails') 
=> ["rails"] 
+0

不過,問題是如何尋找它Ruby的一面,我認爲如果追蹤'gem list ___',它會導致調用...即使它不是非常抽象的做事方式... – 2011-03-28 17:30:33

+0

請參閱編輯的答案我認爲這是你在找什麼。這也是近似匹配。 – 2011-03-28 17:49:03

+0

它確實近似匹配?因爲如果我輸入'r.suggest_gems_from_name('active')',那麼activerecord不會顯示。有一個'r.list',但是它顯示了一切,看起來像是一個名字和一個GemSpec。另外奇怪的是,'r.suggest_gems_from_name'railss''顯示rail和railj,'r.suggest_gems_from_name'rai''不顯示rails。 – 2011-03-29 14:36:30