Skip to main content

Como instalar o Ruby em um macOS para desenvolvimento local

Escrito por:
wordpress-sync/blog-feature-ruby-security

27 de setembro de 2022

0 minutos de leitura

Se você está começando com o desenvolvimento em Ruby ou Ruby on Rails, precisa saber:

  1. Como instalar corretamente o Ruby no Mac.

  2. Como configurar um ambiente de desenvolvimento local que não conflite com o brew ou uma instalação existente do Ruby 2.7 no Mac

Neste tutorial, você aprenderá a fazer as duas atividades. Se você tem um dos novos laptops macOS com M1, não se preocupe. Este tutorial também funciona para instalar Ruby no Mac M1.

Nunca execute brew install ruby

Alguns guias e artigos de blog vão orientar você a instalar o Ruby executando brew install ruby ou atualizar versões existentes do Ruby em um macOS com o comando update ruby mac. Eu recomendo enfaticamente que você não siga esses passos.

Dito isso, o usuário postmodern do Reddit compartilhou em um tópico sobre Ruby que pode ser possível instruir explicitamente o brew para fazer a instalação em um diretório diferente. Por padrão, o brew instala em /usr/local. De acordo com postmodern, isso não interfere com os scripts Ruby do sistema da Apple porque o local do interpretador é codificado como /usr/bin/ruby. Ele também indica que a Apple planeja descontinuar as versões pré-instaladas de Python, Ruby e Perl.

Por que você não é recomendável usar o Ruby do sistema no Mac?

Ao executar comandos que mudam a versão nativa do Ruby, como brew install ruby ou brew uninstall ruby, você corre o risco de introduzir falhas em recursos e funcionalidades do macOS (isso também vale para o Mac M1).

Além disso, é importante ressaltar que a versão pré-instalada do Ruby no macOS está desatualizada. Em um laptop M1 novo de 2022, a versão é ruby 2.6.8p205. A versão mais recente, Ruby 3.1.2, foi lançada em abril de 2022 e é uma atualização de versão principal em relação à pré-instalada no macOS.

Provavelmente, você quer usar o Ruby 3 em um ambiente de desenvolvimento local. Essa é uma razão muito boa para se afastar das versões pré-instaladas do Ruby. Além disso, você terá a liberdade de escolher com qual versão quer trabalhar. Para que essa mágica aconteça, vamos recorrer aos ambientes virtuais do Ruby.

Como verifico qual versão do Ruby está instalada no meu Mac?

Para conferir a versão do interpretador Ruby instalada nativamente, execute o comando:

1/usr/bin/ruby --version

Se você fez nenhuma atualização, o macOS Monterey vem com o Ruby 2.6.8. Se você atualizou ou gerencia versões do Ruby usando rbenv, rvm ou outros gerenciadores de versão Ruby, a versão mostrada pode ser diferente. Às vezes, o Ruby também pode ser encontrado no caminho de arquivo /usr/local/bin/ruby. Isso ocorre quando ele é instalado com o gerenciador de pacotes Homebrew para macOS.

Onde está a pasta do Ruby no Mac?

Muitas vezes, o interpretador do Ruby é encontrado nativamente no macOS nos caminhos de arquivo /usr/bin/ruby ou /usr/local/bin/ruby, dependendo do local da instalação. Os gems do Ruby são instalados e gerenciados nativamente no macOS pelo sistema operacional. Não é recomendável usar sudo gem install ou alterar esses gems do Ruby. Em vez disso, considere a instalação de um ambiente virtual do Ruby usando uma ferramenta como rbenv.

O ambiente virtual do Ruby

Um ótimo conceito que é familiar em outras linguagens de programação e suas ferramentas é o ambiente virtual do Ruby. Se você já usou o virtualenv do Python ou o nvm do Node.js, a transição para o virtualenv do Ruby deve ser fácil. Tudo o que você precisa para começar são algumas ferramentas do ecossistema Ruby, como rbenv ou rvm.

Para evitar conflitos com a versão nativa do Ruby no Mac, essas ferramentas buscam o código-fonte do Ruby na internet, compilam-no localmente e o disponibilizam em um caminho. Em seguida, você precisa adicionar esse novo caminho de diretório ao seu shell preferido para usar a nova versão do Ruby quando abrir novas interfaces de terminal.

Essencialmente, essas ferramentas são gerenciadoras de versão do Ruby que permitem alternar com rapidez entre diferentes versões de runtime do Ruby conforme a necessidade, dependendo do diretório de instalação do Ruby definido.

Você deve usar rbenv ou rvm?

rbenv e rvm são duas ferramentas populares de ambientes virtuais do Ruby. Como ferramentas e versões de ambiente específicas tendem a ficar desatualizadas com o desenvolvimento do setor, não vou fazer uma comparação detalhada de recursos entre rbenv e rvm1. Em vez disso, pedi a opinião de alguns amigos desenvolvedores experientes em Ruby e optei pelo rbenv, recomendado pela maioria.

Há outros gerenciadores de ambiente virtual do Ruby que ainda não experimentei, mas que vale a pena mencionar: chruby e ruby-install.

Vamos começar com o rbenv

O projeto de código aberto rbenv está hospedado no GitHub e é um ótimo lugar para resolver problemas e obter documentação atualizada do README do rbenv.

Como instalar o rbenv do Ruby

Assim como acontece com muitas outras ferramentas, recorremos ao popular gerenciador de pacotes Homebrew para macOS. Execute o seguinte comando no terminal:

1brew install rbenv ruby-build

Depois que tudo estiver instalado, precisamos instruir o rbenv a configurar o shell para, sempre que abrirmos uma nova janela de terminal para digitar comandos no prompt, usar a versão do runtime do Ruby que instalamos com o rbenv (em vez da versão pré-instalada Ruby 2.6.8 do macOS).

Para configurar o rbenv com o shell, execute este comando:

1rbenv init

Siga as instruções exibidas na tela se for necessária alguma configuração extra. Pode ser necessário colar um comando na configuração do shell. Se estiver no macOS e não tiver mudado do Z Shell (ZSH) padrão, adicione a seguinte linha de código ao topo do arquivo ~/.zshrc:

1eval "$(rbenv init - zsh)"

O processo de instalação do rbenv foi concluído. Você pode executar alguns testes de diagnóstico para confirmar se tudo está configurado corretamente. Para isso, execute a ferramenta rbenv-doctor, fornecida pelo projeto rbenv do GitHub:

  1. Abra uma nova janela de terminal para carregar o novo ambiente do rbenv

  2. Execute o comando:

    curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-doctor | zsh

Aviso: o comando deve ser executado com muito cuidado, pois você está redirecionando comandos para o shell do seu ambiente de desenvolvimento, que vem de um repositório público e de código aberto no GitHub. É possível que um malfeitor tenha adulterado o código-fonte, então é altamente recomendável revisar o código devidamente antes de executar o comando.

Como usar o rbenv para instalar uma nova versão do Ruby?

Parabéns por criar seu próprio ambiente virtual do Ruby. Agora que você tem uma configuração funcional do rbenv, podemos usá-la para gerenciar todas as suas versões do Ruby.

Para começar, liste as versões do Ruby disponíveis para instalação. Escolha a versão mais recente do Ruby ou talvez uma versão específica que você esteja procurando. Para usar o rbenv para listar todas as versões do Ruby, execute este comando:

1curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-doctor | zsh

O comando gera esta saída:

12.6.10
22.7.6
33.0.4
43.1.2
5jruby-9.3.6.0
6mruby-3.1.0
7picoruby-3.0.0
8rbx-5.0
9truffleruby-22.1.0
10truffleruby+graalvm-22.1.0
11
12Only latest stable releases for each Ruby implementation are shown.
13Use 'rbenv install --list-all / -L' to show all local versions.

Agora você pode instalar uma dessas versões do Ruby. Vamos usar o rbenv para instalar a versão 3.1.2 do Ruby:

1rbenv install 3.1.2

O comando começa a buscar os arquivos de código-fonte adequados para extrair, compilar e instalar a versão 3.1.2 do runtime do Ruby disponível no seu shell.

Quando a instalação terminar, configure-a para ser sempre a versão escolhida na inicialização do shell. Para isso, execute:

1rbenv global 3.1.2

Por fim, você pode verificar se tudo está funcionando conforme o esperado executando ruby --version no shell. O resultado deve ser parecido com este:

1ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [arm64-darwin21]

Antes de encerrarmos, uma observação sobre o rbenv global. Devido ao nome do comando (global), fiquei preocupado com a possibilidade de que esse comando interferisse de alguma forma na versão pré-instalada do Ruby no macOS. Isso não acontece. O comando se refere à configuração global do usuário, que é o arquivo de configuração do rbenv em ~/.rbenv/version e significa que não está vinculado a um projeto/diretório específico do Ruby.

O que vem pela frente?

Vulnerabilidades no Ruby on Rails e vulnerabilidades de segurança do Ruby

Antes de voltar correndo para suas atividades de desenvolvimento no Ruby, considere os recursos abaixo para garantir que você está seguindo convenções de codificação segura e protegendo os gems do Ruby contra vulnerabilidades. Eles são ótimos para vulnerabilidades no Ruby on Rails que se manifestam como parte dos gems do Ruby da estrutura, bem como para vulnerabilidades de segurança do Ruby em geral.

Recomendo os seguintes recursos de desenvolvimento e segurança do Ruby:

Por fim, não deixe de ficar de olho na execução remota de código malicioso e outros riscos de segurança de gems do Ruby devido a ataques à cadeia de suprimentos que notamos em diversos ecossistemas, incluindo o Ruby.

Experimente agora nossa ferramenta gratuita de verificação de código Ruby para ver como o mecanismo de código da Snyk analisa código em busca de problemas de segurança e qualidade.

wordpress-sync/blog-feature-ruby-security