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

时间:2012-02-05 00:53:24

标签: ruby gem version

我正在尝试查找指定gem的所有远程可用版本。

我尝试使用:

gem list rhc --remote

但它显示:

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

有什么想法吗?

4 个答案:

答案 0 :(得分:187)

嗯,这比我想象的要容易得多(好吧,不是真的,让我们说它应该是那么容易):

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)

答案 1 :(得分:27)

根据RubyGem's Guide,您应该使用search关键字。所以命令可以是:

gem search rhc --all

如果您想使用确切名称:

gem search ^rhc$ --all

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

gem search ^rhc$ --pre

如果您使用zsh添加引号:

gem search '^rhc$' --all

答案 2 :(得分:8)

要扩展@ 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.

答案 3 :(得分:-2)

尝试:

gem list [STRING] [options]

例如:

gem list rhc -r

或尝试:

gem list -r rhc

文档,提供的示例似乎相互矛盾 - 尝试两者


参见文档:

http://docs.rubygems.org/read/chapter/10#page34