LoginSignup
2
2

More than 3 years have passed since last update.

Gem のマイナーバージョン比較に to_f を使わないようにする

Last updated at Posted at 2016-03-30

問題点

まず、Gem のマイナーバージョンが 10 を越えると、バージョンが 5.10 という文字列になる。

マイナーバージョンを比較したいときに、これを to_f すると

irb(main):001:0> "5.10".to_f
=> 5.1

なので、 5.8 より大きいときに という意図で下記を書くと、

if foo_version.to_f > "5.8".to_f

マイナーバージョンが 10 を超えた時に困ったことになる。

irb(main):002:0> "5.8".to_f > "5.8".to_f
=> false
irb(main):003:0> "5.9".to_f > "5.8".to_f
=> true
irb(main):004:0> "5.10".to_f > "5.8".to_f
=> false
irb(main):005:0>

解決策

Gem::Version を使う。 参考:http://qiita.com/itkrt2y/items/69f0933f65665bc999b5

irb(main):006:0> Gem::Version.new("5.10") > Gem::Version.new("5.8")
=> true
irb(main):007:0>
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2