强制完全匹配`gem list`

ico*_*ast 6 rubygems

gem list rails用来匹配以"rails" 开头的所有东西(文档仍然声称它的工作原理)但在某些时候它开始匹配名称中任何地方包含 rails的所有东西.这可能会变得荒谬,因为有(目前我写这个,但我确信它实际上按小时增加)2,764项匹配"rails":

gem list rails --remote | wc -l
2764
Run Code Online (Sandbox Code Playgroud)

Rubygems可以默认只返回完全匹配吗?我没有看到任何强制完全匹配的命令行开关.也许是一个场景~/.gemrc

显然我可以通过将输出传递给其他实用程序来做到这一点,但是每次你想要(例如)检查一个gem的最新版本时都会感到很痛苦,并且它会慢得多,并迫使你停下来想想(IMO)会分散您正在处理的任何问题的细节.

gem list rails --remote | grep '^rails '
Run Code Online (Sandbox Code Playgroud)

是否有一个很好的方法使其成为默认值?

alv*_*vin 8

您基本上是在命令行上输入正则表达式,所以

gem list -r ^rails$
Run Code Online (Sandbox Code Playgroud)

做一个没有管道的精确搜索.我使用的是rubygems 2.0.6和2.4.5,它适用于两个版本.

但是我找不到任何东西放在.gemrc中.您可以轻松地为最常见的情况设置包装器shell脚本.


小智 2

如果您想搜索以“rails”开头的 gem,您可以使用以“^”开头的搜索字符串:

gem list ^rails+ --remote
Run Code Online (Sandbox Code Playgroud)

我尝试过list使用 ruby​​gems 1.8.24 版本,其行为如文档中所述,但对于 ruby​​gems 2.2.1,您必须使用这个版本。