Se você estiver usando gemsets rvm junto com o bundler, poderá desinstalar versões antigas de gems executando:
bundle clean --force
Você só deseja fazer isso se estiver usando um conjunto de joias por projeto, caso contrário, irá explodir as joias de que outros projetos precisam. Se você seguir isso, poderá automatizar isso com um alias de bash:
alias bi='bundle install && ( ( [ `rvm-prompt g` ] && bundle clean --force ); true )'
Agora, quando você executar, bi
ele irá agrupar a instalação e fazer uma limpeza apenas se você estiver atualmente em um gemset.
EDIT: Na prática, isso se tornou um pouco chato, pois tornou a troca de branches que atualizavam as gemas mais demorada.
Para combater isso, decidi fazê-lo limpar joias apenas 10% das vezes.
alias bi='bundle install && ( ( [ $RANDOM -gt 29490 ] && [ `rvm-prompt g` ] && bundle clean --force ); true )'
Como decidi por 10%? Apenas aleatoriamente. Eu queria algo baixo porque não preciso que o conjunto de joias esteja sempre limpo, isso vai garantir que isso aconteça ocasionalmente em projetos ativos, que é o que eu realmente quero. Teoria do jogo 😉