class Gem::Requirement

[edit]

aliases: Gem::Version::Requirement

要約

Gem の必要条件を扱うクラスです。

このクラスのインスタンスには複数の必要条件を含めることができます。

:Gem::Dependency の内部で使われています。

目次

特異メソッド
インスタンスメソッド
定数

継承しているメソッド

Comparableから継承しているメソッド

特異メソッド

create(input) -> Gem::Requirement[permalink][rdoc][edit]

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

[PARAM] input:
文字列か配列か Gem::Requirement, Gem::Version のインスタンスのいずれかを指定します。
[RETURN]
上記以外の値を input に指定するとデフォルト値を返します。

pp Gem::Requirement.create("~> 3.2.1")
# => Gem::Requirement.new(["~> 3.2.1"])

[SEE_ALSO] Gem::Requirement.new, Gem::Requirement.default

default -> Gem::Requirement[permalink][rdoc][edit]

ゼロ以上 ( '>= 0' ) を指定して作成された Gem::Requirement のインスタンスを返します。


pp Gem::Requirement.default
# => Gem::Requirement.new([">= 0"])
new(requirements) -> Gem::Requirement[permalink][rdoc][edit]

Gem::Requirement のインスタンスを作成します。

[PARAM] requirements:
文字列か配列か Gem::Version のインスタンスを指定します。

pp Gem::Requirement.new("~> 3.2.1")
# => Gem::Requirement.new(["~> 3.2.1"])

[SEE_ALSO] Gem::Requirement#parse, Gem::Requirement.create

parse(obj) -> Array[permalink][rdoc][edit]

バージョンの必要上件をパースして比較演算子とバージョンを要素とする二要素の配列を返します。

[PARAM] obj:
必要上件を表す文字列または Gem::Version のインスタンスを指定します。
[RETURN]
比較演算子と Gem::Version のインスタンスを要素とする二要素の配列を返します。
[EXCEPTION] ArgumentError:
obj に不正なオブジェクトを指定すると発生します。

p Gem::Requirement.parse("~> 3.2.1") # => ["~>", #<Gem::Version "3.2.1">]

インスタンスメソッド

satisfied_by?(version) -> bool[permalink][rdoc][edit]
self === version -> bool
self =~ version -> bool

引数 version が自身に含まれる全ての必要条件を満たす場合に true を返します。そうでなければ、false を返します。

[PARAM] version:
Gem::Version のインスタンスを指定します。

req = Gem::Requirement.new("~> 3.2.1")

p req.satisfied_by?(Gem::Version.new('3.2.9'))  # => true
p req.satisfied_by?(Gem::Version.new('3.3.0'))  # => false
as_list -> [String][permalink][rdoc][edit]

必要条件を文字列の配列で返します。


req = Gem::Requirement.new("< 5.0", ">= 1.9")
p req.as_list  # => ["< 5.0", ">= 1.9"]
concat(requirements) -> Array[permalink][rdoc][edit]

新しい条件(配列)を自身の条件に破壊的に加えます。

[PARAM] requirements:
条件の配列を指定します。

req = Gem::Requirement.new("< 5.0")
req.concat(["= 1.9"])
puts req  # => < 5.0, = 1.9
exact? -> bool[permalink][rdoc][edit]

条件がちょうどのバージョンが指定されている場合は、true を返します。


p Gem::Requirement.new("= 3").exact?          # => true
p Gem::Requirement.new("= 3", "= 3").exact?   # => true
p Gem::Requirement.new("= 3", "= 5").exact?   # => false
p Gem::Requirement.new("= 3", ">= 3").exact?  # => false
p Gem::Requirement.new(">= 3").exact?         # => false
none? -> bool[permalink][rdoc][edit]

自身が条件を持たない場合は、true を返します。


req = Gem::Requirement.new(">= 0")
p req.none?  # => true
prerelease? -> bool[permalink][rdoc][edit]

何らかのバージョンがプレリリースのものであれば、true を返します。


p Gem::Requirement.new("< 5.0").prerelease?   # => false
p Gem::Requirement.new("< 5.0a").prerelease?  # => true
pretty_print(pp) -> String[permalink][rdoc][edit]

わかりやすい形で、条件を表す文字列を返します。 pp メソッドで出力する際に、内部で用いられます。

[PARAM] PP:
:PP オブジェクトを指定します。

req = Gem::Requirement.new(["< 5.0", ">= 1.9"])
pp req # => Gem::Requirement.new(["< 5.0", ">= 1.9"])
specific? -> bool[permalink][rdoc][edit]

条件に上限のある指定で、最新のバージョンにマッチしない可能性のある場合は、true を返します。


p Gem::Requirement.new(">= 3").specific?  # => false
p Gem::Requirement.new("~> 3").specific?  # => true
p Gem::Requirement.new("=  3").specific?  # => true
to_s -> String[permalink][rdoc][edit]

条件を表す文字列を返します。


req = Gem::Requirement.new(["< 5.0", ">= 1.9"])
p req.to_s # => "< 5.0, >= 1.9"

定数

OPS -> Hash[permalink][rdoc][edit]

比較演算子と対応する処理を格納したハッシュです。次の内容と等価です。


OPS = { #:nodoc:
  "="  =>  lambda {|v, r| v == r },
  "!=" =>  lambda {|v, r| v != r },
  ">"  =>  lambda {|v, r| v >  r },
  "<"  =>  lambda {|v, r| v <  r },
  ">=" =>  lambda {|v, r| v >= r },
  "<=" =>  lambda {|v, r| v <= r },
  "~>" =>  lambda {|v, r| v >= r && v.release < r.bump },
}.freeze

次のように、Gem::Version どうしを比較します。


p Gem::Requirement::OPS["="].call(Gem::Version.new('3.1'), Gem::Version.new('3.0'))   # => false
p Gem::Requirement::OPS["~>"].call(Gem::Version.new('3.1'), Gem::Version.new('3.0'))  # => true