guilherme 44

Home Sobre RSS

Configurando Ruby e Node.js com ASDF

  • asdf
  • rbenv
  • rvm
  • nvm

Antigamente, utilizava o rbenv para gerenciar versões do Ruby, mas há aproximadamente 1 ano migrei para o asdf. E hoje utilizo ele não só para gerenciar o Ruby, utilizo ele para gerenciar o Python, Node.js e Elixir. Você pode utilizar ele para gerenciar quase todas as linguagens que deseja.

Porque utilizar o asdf?

  • Uma única ferramenta para gerenciar versões de linguagem
  • Comandos consistentes para gerenciar todas as linguagens
  • Configuração global única mantendo os padrões em um só lugar
  • Arquivo de configuração único .tool-versions por projeto
  • Suporte para arquivos de configuração existentes .node-version, .nvmrc, .ruby-version para fácil migração
  • Alterna automaticamente as versões à medida que você percorre seus diretórios
  • Sistema de plugins simples para adicionar suporte para a linguagem de escolha
  • Scripts de conclusão gerenciados pelo plugin, não por você!

Acho o rbenv ou rvm muito bons mas a facilidade de manter o gerenciamento das versões de linguagens em uma única ferramenta é sensacional, dei adeus para o nvm, virtualenv e rbenv.

A instalação é muito simples. Vamos lá.

Ferramentas base

  • macOS
    brew install openssl libyaml libffi
    brew tap homebrew/dupes && brew install apple-gcc42
    


  • Ubuntu
    sudo apt install \
    automake autoconf libreadline-dev \
    libncurses-dev libssl-dev libyaml-dev \
    libxslt-dev libffi-dev libtool unixodbc-dev
    


  • Arch
    sudo pacman -S --needed gcc5 base-devel libffi libyaml openssl zlib
    

ASDF

Clona o repositório e faz o checkout para última versão:

git clone https://github.com/asdf-vm/asdf.git ~/.asdf
cd ~/.asdf
git checkout "$(git describe --abbrev=0 --tags)"

Configuração de ambiente

  • macOS
    echo -e '\n. $HOME/.asdf/asdf.sh' >> ~/.bash_profile
    echo -e '\n. $HOME/.asdf/completions/asdf.bash' >> ~/.bash_profile
    


  • Linux
    echo -e '\n. $HOME/.asdf/asdf.sh' >> ~/.bashrc
    echo -e '\n. $HOME/.asdf/completions/asdf.bash' >> ~/.bashrc
    

Reinicie seu terminal para as modificações fazer efeito.

Plugins

  • Ruby
    asdf plugin-add ruby https://github.com/asdf-vm/asdf-ruby.git
    


  • Node.js
    asdf plugin-add nodejs https://github.com/asdf-vm/asdf-nodejs.git
    # Importar as chaves OpenPGP da equipe de liberação do Node.js
    bash ~/.asdf/plugins/nodejs/bin/import-release-team-keyring
    

Comandos úteis

Atualizar todos os plugins:

asdf plugin-update --all

Ver todas as versões disponíveis da linguagem:

asdf list-all ruby
asdf list-all nodejs

Para instalar a linguagem:

asdf install ruby 2.5.5
asdf install nodejs 10.15.2

Configurar linguagem padrão:

asdf global ruby 2.5.5
asdf global elixir 10.15.2

Caso você tenha um projeto em que esteja utilizando outra versão do ruby ou nodejs, navegue até a pasta do projeto e defina a versão com o seguinte comando:

asdf local ruby 2.4.2
asdf local nodejs 8.7.0

Esse comando cria um arquivo chamado .tool-versions nele vai ter o nome da linguagem e versão que você escolheu. Assim sempre que o ASDF verificar a existencia desse arquivo no projeto ele redefine a versão da linguagem que você precisa.

Remover versões de linguagem:

asdf remove ruby 2.3.0
asdf remove nodejs 8.7.0

Sempre que você instala bibliotecas que têm executáveis que precisam estar no PATH, você deve fazer reshim. Por exemplo:

npm install -g yarn # vai instalar o yarn via npm
asdf reshim nodejs # vai colocar o executavel do yarn no path
yarn # vai executar corretamente

Agora já está tudo pronto. Acredito que com isso você já pode seguir em frente e ter uma vida feliz sem dor de cabeça para atualizar e testar outras versões de linguagens.


Fontes: