Ruby's Pessimistic Operator

Do you know Ruby’s pessimistic operator? It looks like this:

~>

You’ve seen it in some Gemfiles. Here’s an example

gem 'rails', '~> 3.0.3'
gem 'thin',  '~> 1.1'

~> 3.0.3 means that when you bundle install, you’ll get the highest-released gem version of rails between the range >= 3.0.3 and < 3.1.

~> 1.1 means that when you bundle install, you’ll get the highest-released gem version of thin between the range >= 1.1 and < 2.0.

Using the pessimistic operator in combination with consistent Semantic versioning by gem authors, we can theoretically achieve better stability in our dependencies.

Read more on the tradeoffs or read our current guidelines on Bundler.

Pair with one of our expert developers to level up your skills with Coaching by thoughtbot. Save time learning best practices and techniques for reducing technical debt in Ember, Ruby, Haskell, and Go in 1-on-1 sessions tailored to your goals.