14
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Gem(あるいはRails)のバージョン比較方法

Last updated at Posted at 2016-03-29

不幸にも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")

あまりやってるの見かけないですが、厳密にバージョン比較したい方・しなければいけない方はやってみてはいかがでしょうか?

14
8
2

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
14
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?