Gemfile の ~> という記号はどういう意味なのか


RubyGems の依存関係を管理してくれる Bundler の Gemfile 内で使われる ~> という記号はどう言う意味なのでしょうか.

Bundler のバージョンは 1.16.1 になります.

例えば次のような Gemfile があった場合,

source 'https://rubygems.org'
gem 'nokogiri'
gem 'rack', '~> 2.0.1'
gem 'rspec'

次の行に ~> が使われています:

gem 'rack', '~> 2.0.1'

もしその記号が ~> ではなく > であれば 2.0.1 より大きいバージョンを, >= であれば 2.0.1 以上のバージョンを指定することになりますが ~> は一体どのようなバージョンを指定することになるのでしょうか.

答えは 2.0.1 以上 2.1.0 未満のバージョンを指定することになります.

なので次のように書き換えることもできます:

gem 'rack', '>= 2.0.1', '< 2.1.0'

もう一つの例として, 次のような場合,

gem 'nokogiri', '~> 1.4.2'

このように書き換えられます:

gem 'nokogiri', '>= 1.4.2', '< 1.5.0'

Gemfile で ~> という記号をを見かけたときはそう言う意味になります.