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

Ruby 如何列出远程站点上可用的gem的所有版本?,ruby,gem,version,Ruby,Gem,Version,我试图找出指定gem的所有远程可用版本 我尝试使用: gem list rhc --remote 但它表明: *** REMOTE GEMS *** rhc (0.84.15) rhcp (0.2.18) rhcp_shell (0.2.12) 有什么想法吗?试试: gem list [STRING] [options] 例如: gem list rhc -r 或者尝试: gem list -r rhc (所提供的文档和示例似乎相互矛盾-尝试两者) 请参阅文档: 嗯,这比我想象的要容

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

我尝试使用:

gem list rhc --remote
但它表明:

*** REMOTE GEMS ***
rhc (0.84.15)
rhcp (0.2.18)
rhcp_shell (0.2.12)
有什么想法吗?

试试:

gem list [STRING] [options]
例如:

gem list rhc -r
或者尝试:

gem list -r rhc
(所提供的文档和示例似乎相互矛盾-尝试两者)


请参阅文档:


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

返回:

*** 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)
根据需要,您应该使用
搜索
关键字。因此,命令可以是:

gem搜索rhc——全部

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

gem搜索^rhc$--全部

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

gem搜索^rhc$--pre

如果您使用的是
zsh
添加引号:


gem search“^rhc$”--all

要扩展@eyalev的答案,如果您想要每行一个版本的列表,这里有一行:

gem search '^rspec$' --all \
  | grep -o '\((.*)\)$' \
  | tr -d '() ' \
  | tr ',' "\n" \ 
  | sort
0.0.10
0.1.0
0.1.1
# etc.
为了使它更具可重用性,您可以编写一些函数(请原谅我有限的bash技能):


还要注意,“rhc”是一个正则表达式,因此如果您只想查看该正则表达式,您可以搜索
gem list^rhc$
,并且“-remote”和“-all”标志可以缩写并组合为
gem list^rhc$-ra
,注意您可以传递其他选项,例如,要获得phusion passenger的最新预发布版,您需要:
gem list-ra--pre-passenger
(-ra=--remote--all)@joshuacheck注意,像
zsh
这样的shell具有更高级的解析功能,可以通过这种方式捕获正则表达式。为了更安全(如果将类似的内容放入脚本或自述文件中),请将其放入字符串中,这样我们就可以确保通过1-1,即
gem list“^rhc$”
等@m_gol碰巧在阅读注释,因为my
zsh
这样做是为了您的帮助!使用
--prerelease
查看beta版本这并不列出所有版本使用
--prerelease
查看beta版本
gem search '^rspec$' --all \
  | grep -o '\((.*)\)$' \
  | tr -d '() ' \
  | tr ',' "\n" \ 
  | sort
0.0.10
0.1.0
0.1.1
# etc.
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.