如何列出远程站点上可用的所有gem版本?


133

我试图找出指定gem的所有远程可用版本。

我尝试使用:

gem list rhc --remote

但它显示:

*** REMOTE GEMS ***
rhc (0.84.15)
rhcp (0.2.18)
rhcp_shell (0.2.12)

有任何想法吗?

Answers:


204

好吧,这比我想像的要容易(好吧,不是真的,应该说应该很容易):

gem list rhc --remote --all

哪个返回:

*** REMOTE GEMS ***
rhc (0.84.15, 0.84.13, 0.83.9, 0.82.18, 0.81.14, 0.80.5, 0.79.5, 0.77.8, 0.75.9, 0.74.6, 0.74.5, 0.73.14, 0.72.29, 0.71.2, 0.69.6, 0.69.3, 0.68.5)
rhcp (0.2.18, 0.2.17, 0.2.16, 0.2.15, 0.2.14, 0.1.9, 0.1.8, 0.1.7, 0.1.6, 0.1.5, 0.1.4, 0.1.3, 0.1.2)
rhcp_shell (0.2.12, 0.2.11, 0.0.9, 0.0.7, 0.0.6, 0.0.5, 0.0.4, 0.0.3, 0.0.2, 0.0.1)

52
另请注意,“ rhc”是一个正则表达式,因此,如果您只想查看该正则表达式,则可以进行搜索,gem list ^rhc$并且可以缩写“ --remote”和“ --all”标志并将其组合为gem list ^rhc$ -ra
Joshua Cheek

5
请注意,您可以传递其他选项,即。以获得想要的乘机旅客的最新预发行版:gem list -ra --pre passenger
Mirek Rusin

5
@JoshuaCheek指出,某些类的shell zsh具有更高级的解析功能,并且可以捕获以这种方式给出的正则表达式。为了更安全(如果把某事像在一个脚本或README)是把它放在一个字符串,因此,我们相信,我们通过它1-1,即gem list '^rhc$'
mgol

1
@m_gol恰好正在读评论,因为我zsh为此+1了!
Jesse Whitham 2014年

用于--prerelease查看Beta版本
akostadinov 2015年

32

根据《RubyGem指南》,您应该使用search关键字。因此命令可能是:

gem search rhc --all

如果您想要确切的名称,请使用:

gem search ^rhc$ --all

如果要包含预发行版本,请使用 --pre

gem search ^rhc$ --pre

如果您使用zsh加引号:

gem search '^rhc$' --all


4
用于--prerelease查看Beta版本
akostadinov 2015年

9

要扩展@eyalev的答案,如果您希望每行列出一个版本,请使用以下代码:

gem search '^rspec$' --all \
  | grep -o '\((.*)\)$' \
  | tr -d '() ' \
  | tr ',' "\n" \ 
  | sort
0.0.10
0.1.0
0.1.1
# etc.

为了使它更可重用,您可以编写一些函数(请原谅我有限的bash技能):

function extract_gem_versions() {   
  echo "$1" \
    | grep -o '\((.*)\)$' \
    | tr -d '() ' \
    | tr ',' "\n"; 
}

function gem_versions() { 
  local gem_name="$1"; 
  local pattern="^${gem_name}$";  
  local vers_str="$(gem search ${pattern} --all)";  
  extract_gem_versions "$vers_str";  
}

gem_versions rspec | sort
0.0.10
0.1.0
0.1.1
# etc.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.