代码之家  ›  专栏  ›  技术社区  ›  JP Silvashy Gautam Rege

如何从Ruby中访问gem的版本?

  •  8
  • JP Silvashy Gautam Rege  · 技术社区  · 15 年前

    我怎样才能用Ruby获得宝石的版本呢?我不想使用系统调用,而是将shell输出grep为:

    `gem search passenger`.scan(/(?:\(|, *)([^,)]*)/).flatten.first
    => "2.2.9"
    

    我就不能用以下方法得到它吗?

    Gem::Version
    

    我只是不知道如何指定我想要的gem,就像在这种情况下,我想得到乘客gem的最新版本。

    4 回复  |  直到 9 年前
        1
  •  1
  •   Ryan McGeary    15 年前

    这有助于你上路。这将搜索 远程索引 为特定宝石的最新版本。

    $ irb
    >> require "rubygems"
    >> dep = Gem::Dependency.new "passenger", Gem::Requirement.default
    >> Gem::SpecFetcher.fetcher.find_matching dep
    => [[["passenger", #<Gem::Version "2.2.9">, "ruby"], "http://gems.rubyforge.org"]]
    
        2
  •  10
  •   Damir Zekić    15 年前

    这个 rubygems' API 有很好的记录。

    您一直在寻找的示例:

    >>> require 'rubygems'
    >>> si = Gem::SourceIndex.from_installed_gems
    >>> gems = si.find_name('rails')
    >>> gems.each { |gem| puts gem.version.version }
    2.3.5
    
        3
  •  3
  •   Community CDub    7 年前

    从“ Determining which rubygem you're using “:

    Gemname::VERSION::STRING
    

    也可以工作。

        4
  •  2
  •   Community CDub    7 年前

    这个重复问题的答案概括了最简单的方法: “ Get version of gem within Ruby “。

    Gem.loaded_specs[$NAME_OF_GEM].version
    

    不过,要使其工作,您需要在 lib 目录。