From the bundler website:
The specifier ~> has a special meaning, best shown by example:
'~> 2.0.3' is identical to '>= 2.0.3' and '< 2.1.'
'~> 2.1' is identical to '>= 2.1' and '< 3.0'.
'~> 2.2.beta' will match prerelease versions like '2.2.beta.12'.
See https://bundler.io/gemfile.html and http://guides.rubygems.org/patterns/#pessimistic-version-constraint