Usando Twiddle Wakka em seu Gemfile

Thiago Lima
2 min readDec 16, 2023

Você deve ter se deparado com algo assim em seu gemfile: gem 'rails', '~> 5.2' esse ~ que aparece é o Twiddle Wakka. Uma sintaxe simplificada para facilitar a escrita.

Partindo do pressuposto que você já utilize Semantic Version para versionar seus apps e gems, vamos pensar em como você restringe as chamadas a essas versões na hora de gerenciá-las no gemfile. Existem 2 tipos de restrição de versão, são elas: as otimistas e as pessimistas.

Imagine uma gem chamada Lib que tenha as seguintes versões:

Lib 1.8.0
Lib 2.1.0
Lib 2.2.0
Lib 2.2.1
Lib 2.3.5
Lib 3.0.0

Eu gostaria de restringir as versões abaixo de 2.1.0 e permitir todas, a partir da versão 2.1.0 possam ser instaladas. Neste caso eu serei otimista.

gem 'lib', '>=2.1.0'

É possível que a versão 3.0.0 não seja compatível com a minha aplicação. então eu preciso restringir de forma pessimista, informando os limites em que o bundle pode instalar.

gem 'lib', '>=2.1.0', '< 3.0.0'

Agora nós garantimos que o bundle pode instalar todas as versões maior ou igual a 2.1.0 e menor que 3.0.0.

o Twiddle Wakka é uma forma de escrever menos, veja:

gem 'lib', '~>=2.2'

Este equivale a ['>=2.2.0', '< 2.3.5']

Ou se eu quiser incluir todas as versões com major 2 eu posso fazer assim:

gem 'lib', '~>=2'

Equivale a ['>=2.2.0', '< 3.0.0']

Referência: https://guides.rubygems.org/patterns/

--

--

Thiago Lima

Hello! I’m Thiago Lima, I’m maried, I have a son named Isaac. I’m software engineer and I programming in Ruby on Rails.