在ruby脚本中查找gem的最新版本

时间:2014-09-30 13:37:06

标签: ruby-on-rails ruby gem

我想找出Nokogiri的最新版本。为此我正在使用:

gem list nokogiri --remote

然而,这会返回一长串具有" nokogiri"在其中:

backupify-rsolr-nokogiri (0.12.1.1)
epp-nokogiri (1.0.0)
glebm-nokogiri (1.4.2.1)
jwagener-nokogiri (1.4.1)
nokogiri (1.6.3.1 ruby java x64-mingw32 x86-mingw32, 1.6.1 x86-mswin32-60, 1.4.4.1 x86-mswin32)
nokogiri-diff (0.2.0)
nokogiri-fitzsimmons (1.5.5.3 ruby java)
nokogiri-happymapper (0.5.9)
nokogiri-happymapper-deiga (0.5.10)
nokogiri-maglev- (1.5.5.20120817130721)
nokogiri-maven (1.5.0 java)
nokogiri-plist (0.5.0)
nokogiri-pretty (0.1.0)
nokogiri-streaming-reader (0.0.2)
nokogiri-styles (0.1.2)
nokogiri-xmlsec (0.0.4)
nokogiri-xmlsec1 (0.0.7)
nokogiri_bang_finders (1.0.0)
nokogiri_helper (0.0.1)
nokogiri_html_helpers (0.1.4)
nokogiri_truncate_html (0.0.3)
rack-nokogiri (0.1.0)
revo-nokogiri (1.4.1 java)
rsolr-nokogiri (0.0.0)
rss-nokogiri (0.0.1.1)
rubyjedi-nokogiri_java (1.4.0.20100513161003 java)
sax-machine-nokogiri-1.4.4-safe (0.0.15)
spp_nokogiri_ext (0.0.5)
superfeedr-nokogiri (1.4.0.20091116183308)
tenderlove-nokogiri (0.0.0.20081001111445, 0.0.0 x86-mswin32-60)
watir-nokogiri (1.0.0)

是否有命令从中获取Nokogiri宝石?即:

nokogiri (1.6.3.1 ruby java x64-mingw32 x86-mingw32, 1.6.1 x86-mswin32-60, 1.4.4.1 x86-mswin32)

另外,如何让Ruby脚本运行此命令?我正在尝试编写一个脚本,它将找到最新版本的gem,然后执行一些操作。我的脚本负责运行此命令。

2 个答案:

答案 0 :(得分:2)

如果您需要在Ruby脚本中使用它,您可能需要查看gem命令使用的类Gem::SpecFetcher来执行远程搜索,例如:

specs = Gem::SpecFetcher.fetcher.detect(:latest) do |name_tuple|
  name_tuple.name == 'nokogiri' && name_tuple.platform == 'ruby'
end

specs是一个2元素数组的数组(本例中仅包含on元素),第一个是Gem::NameTuple对象,第二个是Gem::Source对象(我们是对此不感兴趣)。

found = specs.first.first 
# => #<Gem::NameTuple nokogiri, 1.6.3.1, ruby>
found.name 
# => "nokogiri"
found.version 
# => #<Gem::Version "1.6.3.1">

答案 1 :(得分:1)

$ gem list "^nokogiri$" --remote

*** REMOTE GEMS ***

nokogiri (1.6.3.1 ruby java x64-mingw32 x86-mingw32, 1.6.1 x86-mswin32-60, 1.4.4.1 x86-mswin32)

listsearch的帮助分别表示他们是本地和远程宝石;使用search可能更好。它具有相同的正则表达式功能。

两者都没有提到正则表达式的能力;我从“nokogiri”的结果中直观地了解它。

我错过了“Ruby Script”部分,在这种情况下,你只需要使用现有的Gem功能就好了,没有其他任何真正意义上的东西。扫描您正在使用的工具库是一个好习惯,因为它们显然已经内置了这些功能。