不幸にもGemのバージョンを比較して処理を分岐させなければならないことってありますよね?
Railsでバージョン取得をするなら、みなさんおそらく以下のどれかで取得していることと思います。
Rails4.2.6でやってみた場合
Rails.version #=> "4.2.6"
# https://github.com/rails/rails/blob/master/version.rb
Rails::VERSION::MAJOR #=> 4
Rails::VERSION::MINOR #=> 2
Rails::VERSION::TINY #=> 6
Rails::VERSION::PRE #=> nil ("beta2"とかがあるなら入る)
Rails::VERSION::STRING #=> "4.2.6"
メジャーバージョンの比較でいいなら Rails::VERSION::MAJOR >= 4
でいいですし、
マイナーバージョンまでなら Rails.version.to_f >= 4.1
てな書き方で十分です。
ただ、厳密にやる場合、ないしパッチバージョンまで見る場合はどうすればいいのかな? と思っていたら以下のようにすれば良いようです。
Gem::Version.new(Rails.version) >= Gem::Version.new("4.1.2")
また、RailsならRails.gem_version
でこのGem::Version
のオブジェクトを返してくれるので、以下の書き方ができます。
Rails.gem_version >= Gem::Version.new("4.1.2")
あまりやってるの見かけないですが、厳密にバージョン比較したい方・しなければいけない方はやってみてはいかがでしょうか?