Ruby 2.2.0 リファレンスマニュアル > ライブラリ一覧 > rubygems/versionライブラリ > Gem::Versionクラス

class Gem::Version

クラス・モジュールの継承リスト: Gem::Version < Comparable < Object < Kernel < BasicObject

要約

文字列で表現されたバージョンを比較可能 (Comparable) にするためのクラスです。

バージョンを文字列で表したとき、単純に String#<=> で比較すると、 "1.9" のほうが "1.10" よりも大きい(バージョンが高い)ことになってしまい、正しく判定できません。 Gem::Version はこの問題を解決します。

文字列での比較と Gem::Version での比較

p "1.9" < "1.10" # => false
p Gem::Version.new("1.9") < Gem::Version.new("1.10") # => true

gem のバージョンを取り扱うためのクラスですが、バージョン表記が RubyGems の流儀に則っていれば RubyGems とは無関係に使うこともできます。

バージョン表記のソートの例

versions = %w[ 1.1  1.10  1.9  1.1.beta9  1.1.beta10 ]

p versions.sort_by{ |v| Gem::Version.new(v) }
# => ["1.1.beta9", "1.1.beta10", "1.1", "1.9", "1.10"]

上の例で、"1.9" と "1.10" では(数字列ではなく)整数として 9 より 10 が大きいので、"1.10" のほうが大きいと判定されています。

また、"1.1.beta9" は "beta9" の部分が数字でないものを含んでいるので "1.1" の「プレリリース」バージョンであるとみなされます。この規則により、"1.1" と "1.1.beta9" では後者のほうが小さいと判定されています。

"1.1.beta9" と "1.1.beta10" では、"beta9" と "beta10" の部分だけが違いますが、アルファベット部分と数字部分が分割され、数字部分は整数の大小比較になるため、後者のほうが大きいと判定されます。

特異メソッド

定義 説明
correct?(version) -> 0 | nil

version が正しいバージョンであれば 0 を返します。そうでなければ nil を返します。

create(input) -> Gem::Version | nil

Gem::Version のインスタンスを作成するためのファクトリメソッドです。

new(version) -> Gem::Version

バージョンを表す文字列から、Gem::Version インスタンスを作成します。

インスタンスメソッド

定義 説明
self <=> other -> -1 | 0 | 1 | nil

self と other を比較して、self が小さい時に -1、等しい時に 0、大きい時に 1 の整数を返します。また、other が Gem::Version ではなく比較できないとき、 nil を返します。

bump -> Gem::Version

最後の一桁を切り上げた新しい Gem::Version のインスタンスを返します。

eql?(other) -> bool

self と other の Gem::Version#version のバージョンが等しいとき true を返します。そうでなければ false を返します。

marshal_dump -> Array

完全なオブジェクトではなく、バージョン文字列のみダンプします。

marshal_load(array) -> nil

ダンプされた情報をロードし、自身を破壊的に変更します。

prerelease? -> bool

self がプレリリースと思われる文字を含むバージョンかどうかを返します。

release -> Gem::Version

self をリリースバージョンにした Gem::Version オブジェクトを返します。

version -> String
to_s -> String

バージョン情報を文字列として返します。

定数

定義 説明
Requirement -> Class

Gem::Requirement のエイリアスです。

継承したメソッド

! != __id__ __send__ instance_eval instance_exec method_missing singleton_method_added singleton_method_removed singleton_method_undefined < <= == > >= between? !~ === =~ _dump class clone define_singleton_method display enum_for equal? extend freeze frozen? hash initialize initialize_copy inspect instance_of? instance_variable_defined? instance_variable_get instance_variable_set instance_variables is_a? itself method methods nil? object_id pretty_inspect pretty_print pretty_print_cycle pretty_print_inspect pretty_print_instance_variables private_methods protected_methods psych_to_yaml public_method public_methods public_send remove_instance_variable respond_to? respond_to_missing? send singleton_class singleton_method singleton_methods taint tainted? tap to_a to_ary to_hash to_int to_io to_proc to_regexp to_str trust untaint untrust untrusted? .yaml_tag ::ARGF ::ARGV ::DATA ::ENV ::FALSE ::NIL ::RUBY_COPYRIGHT ::RUBY_DESCRIPTION ::RUBY_ENGINE ::RUBY_PATCHLEVEL ::RUBY_PLATFORM ::RUBY_RELEASE_DATE ::RUBY_REVISION ::RUBY_VERSION ::SCRIPT_LINES__ ::STDERR ::STDIN ::STDOUT ::TOPLEVEL_BINDING ::TRUE