問題点
まず、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>