コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

Rubyでバージョン番号を比較するするときはGem::Versionでできる

いつもパッと出てこないので備忘録メモ

環境

$ ruby -v
ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-darwin16]

やり方

old_version = "1.0.0"
new_version = "1.2.1"

Gem::Version.create(old_version) < Gem::Version.create(new_version)
# => true

ちなみにこんな書き方もOK

Gem::Version.create("1.0.0-dev1") < Gem::Version.create("1.0.0-dev2")
# => true
Gem::Version.create("1.0.0-dev5") < Gem::Version.create("1.0.0-dev2")
# => false

使える文字列かのチェックは .correct? を使う

Gem::Version.correct?("1.0.0.0")
# => true
Gem::Version.correct?("1.0.0-dev2")
# => true
Gem::Version.correct?("1.satou")
# => true
Gem::Version.correct?("satou.tarou")
# => false

参考リンク