2014-01-06 52 views
6

gem list rails用於匹配一切開始與「軌道」(和the documentation still claims it works that way),但在某些時候它開始匹配的一切,名稱中包含的任何地方軌道。這可以得到可笑,因爲有(在我寫這篇文章的那一刻,但我敢肯定它上升實際上按小時)匹配「軌」是2764個項目:部隊精確匹配`寶石list`

gem list rails --remote | wc -l 
2764 

可以RubyGems的是隻發默認返回完全匹配?我沒有看到任何commandline switches that force an exact match。也許在~/.gemrc的設置?

很顯然,我可以通過將輸出管道輸出到其他工具來實現這一點,但是每次你只想檢查寶石的最新版本並且速度慢很多時,你停下來思考一個細節,(IMO)會分心你正在工作的任何問題。

gem list rails --remote | grep '^rails ' 

是否有一種很好的方法可以將其設置爲默認值?

回答

2

如果你想搜索開始「軌」的寶石,你可以使用以「^」搜索字符串:

gem list ^rails+ --remote 

我已經試過list使用RubyGems,這其中的1.8.24版本行爲如文檔中所述,但對於rubygems 2.2.1,您必須使用這個。

6

你基本上是在命令行中輸入一個正則表達式,所以

gem list -r ^rails$ 

確實不包括管道的精確搜索。我使用的是rubygems 2.0.6和2.4.5,它在兩個版本上都有效。

雖然我找不到任何要放入.gemrc的東西。您可以輕鬆地爲最常見的情況設置一個包裝程序外殼腳本。

+0

我不認爲一個別名可能會努力改變的'寶石列表-r'的行爲,因爲它涉及多個令牌,除非你是一個新的虛構的命令別名,或除非你知道我不熟悉的一些別名巫術(但我對學習非常感興趣!)。 – iconoclast

+0

哦,我認爲你是對的,因爲我認爲你不能在那裏獲得美元符號。您可以使用最常用用例的shell腳本包裝器來完成此操作。回答編輯。 – alvin

0

看來他們在版本2.7.3或其附件中添加了一個選項。我沒有在2.5.1中。

http://guides.rubygems.org/command-reference/#gem-list

-e, -​-exact - Name of gem(s) to query on matches the provided STRING 

如果您使用的是Windows,你必須使用引號正則表達式,否則將無法正常工作。

gem list "^pg$" --remote --all