Ruby instalação: RVM & ASDF de maneira fácil para Mac Os M1

Ruby instalação: RVM & ASDF de maneira fácil para Mac Os M1
Photo by Christopher Gower / Unsplash

Quando comecei minha carreira em uma startup de tecnologia, eu tinha um sonho: possuir um MacBook. Com um salário líquido de R$2000,00, o MacBook Air parecia um luxo distante, mas eu estava determinado. Apesar do preço salgado de R$6900, parcelado em 12 vezes, eu fiz o investimento. Era um modelo com Intel e apenas 128GB de memória, que rapidamente se mostrou insuficiente. No entanto, o sentimento de realizar um sonho não tem preço.

Seis anos se passaram e, como tudo na tecnologia, meu fiel companheiro encontrou seu fim na forma de uma placa mãe queimada. O custo do reparo? Quase o preço de um novo. A Apple tem essa habilidade de te empurrar para o mais recente e o mais brilhante. E apesar de qualquer crítica, a marca fala por si só.

Trabalho com tecnologia e preciso de um sistema operacional confiável. Por isso, quando chegou a hora de substituir meu antigo MacBook, optei pelo MacBook Pro M1, um investimento de cerca de R$10.000,00. Mas com a nova arquitetura ARM, vieram novos desafios. A compatibilidade de bibliotecas e ferramentas que eu usava diariamente se tornou uma batalha constante.

A Apple oferece o Rosetta para ajudar na transição, mas a jornada foi árdua. Houve momentos em que dependi exclusivamente do Docker, e outros em que lutei com a falta de imagens para ARM. Mas, como em toda boa história de tecnologia, houve uma virada.

Desenvolvi um script em bash que me permite alternar entre arquiteturas e versões de forma simples e eficaz. E agora, quero compartilhar com vocês uma solução que finalmente funcionou para mim: a combinação do asdf e do RVM. O RVM não suporta algumas versões do Ruby, mas o asdf preencheu essa lacuna perfeitamente.

Para aqueles que enfrentam um dilema semelhante, aqui está um trecho de script para o seu .zshrc que permite alternar entre o RVM e o asdf com facilidade:

# Função para usar o RVM
use_rvm() {
  # Desativa o asdf removendo do PATH
  export PATH=$(echo $PATH | sed -e 's|:$HOME/.asdf/shims||' -e 's|$HOME/.asdf/shims:||')

  # Carrega o RVM
  export PATH="$PATH:$HOME/.rvm/bin"
  source $HOME/.rvm/scripts/rvm

  # Define a versão do Ruby com RVM
  rvm use $1
  echo "Using RVM with Ruby version $(ruby -v)"
}

# Função para usar o asdf
use_asdf() {
  # Desativa o RVM removendo do PATH
  export PATH=$(echo $PATH | sed -e 's|:$HOME/.rvm/bin||' -e 's|$HOME/.rvm/bin:||')
  unset GEM_HOME
  unset GEM_PATH

  # Carrega o asdf
  source $HOME/.asdf/asdf.sh

  # Define a versão do Ruby com asdf
  asdf local ruby $1
  echo "Using asdf with Ruby version $(ruby -v)"
}

Com um simples comando, você pode alternar entre ambientes e manter seu fluxo de trabalho ágil e eficiente. A tecnologia está em constante evolução, e nós, como profissionais da área, devemos nos adaptar e superar cada novo desafio. Meu MacBook Air pode ter sido o início, mas a jornada continua com o Pro M1 e além.

Para usar estas funções, você pode simplesmente chamar use_rvm <versão> ou use_asdf <versão> no seu terminal. Por exemplo:

use_rvm 2.7.2

ou

use_asdf 3.0.0

Certifique-se de substituir <versão> pela versão específica do Ruby que você deseja usar.

Nota: Este script é um exemplo básico e pode precisar de ajustes dependendo da configuração específica do seu sistema. Por exemplo, se você tiver um arquivo .rvmrc ou outras configurações específicas do RVM, pode ser necessário ajustar o script para lidar com isso. Da mesma forma, se o asdf requer configurações adicionais, você precisará incluí-las no script.

Read more