88

What does the -> mean next to a version number in a Gemfile?

For example:

gem 'sass-rails',   '~> 3.1.5'
3
  • 1
    So it is, but a decent search didn't find that question.
    – brad
    Commented Jan 2, 2012 at 11:17
  • 2
    No sweat! There is plenty of space on Interwebs. A little duplication is rather good. :)
    – Waseem
    Commented Jan 2, 2012 at 19:20
  • While we're mentioning duplicates, here's the oldest question that it's a dupe of: stackoverflow.com/q/3414337 Commented Jan 9, 2020 at 13:36

2 Answers 2

107

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

2
  • Yes, you're right and I was way too fast with my answer and was in editing already, sorry! Commented Jan 2, 2012 at 11:00
  • Okay, I had been reading the gemfile manual which didn't seem to have that info. Should have just stuck to the pretty pages!
    – brad
    Commented Jan 2, 2012 at 11:04
24

You usually use this to tell bundler that it's ok to install some minor updates (last digit specified can vary) but not to install some major update.

SO

~> 2.0.3 means >= 2.0.3< 2.1

and

~> 2.1 means >= 2.1< 3.0

Read more at https://bundler.io/gemfile.html

Not the answer you're looking for? Browse other questions tagged or ask your own question.