Configurando Ruby e Node.js com ASDF
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:
Enviando SMS com Ruby com o Twilio »