Skip to main content

Como instalar Ruby no macOS para desenvolvimento local

Escrito por
blog feature ruby security

27 de setembro de 2022

0 minutos de leitura

Se você está começando a desenvolver com Ruby ou Ruby on Rails, é importante saber:

  1. Como instalar Ruby corretamente no Mac.

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

Neste tutorial, você vai aprender a fazer as duas coisas! Se você tem um dos novos notebooks M1 com macOS, 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 recomendam instalar Ruby executando brew install ruby ou atualizar as versões existentes do Ruby no macOS com o comando update ruby mac. Recomendo fortemente que você evite fazer isso.

Dito isso, o usuário do Reddit postmodern comentou em uma discussão sobre Ruby que talvez seja possível configurar a instalação do brew para ser feita explicitamente em outro diretório. Por padrão, o Brew instala em /usr/local e, segundo postmodern, isso não interfere nos scripts Ruby do sistema Apple, porque o caminho do interpretador está definido diretamente como /usr/bin/ruby. Ele também destaca que a Apple planeja descontinuar as versões pré-instaladas de Python, Ruby e Perl.

Por que não usar o Ruby do sistema no Mac?

Se você executar comandos que alteram a versão nativa do Ruby, como brew install ruby ou brew uninstall ruby, corre o risco de prejudicar recursos e funcionalidades do macOS (isso também se aplica ao Mac M1).

Também vale destacar que a versão do Ruby pré-instalada no macOS está desatualizada. Em um novo notebook M1 de 2022, por exemplo, a versão é ruby 2.6.8p205. A versão mais recente, Ruby 3.1.2, foi lançada em abril de 2022 e representa uma grande atualização em relação à versão pré-instalada no macOS.

É provável que você queira usar Ruby 3 em um ambiente de desenvolvimento local — um ótimo motivo para deixar de usar as versões pré-instaladas do Ruby. Assim, você também fica livre para escolher a versão com a qual quer trabalhar. Para isso, vamos recorrer aos ambientes virtuais de Ruby.

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

Para verificar qual versão do interpretador Ruby está instalada nativamente, execute o comando:

/usr/bin/ruby --version

Se você não atualizou o sistema, o macOS Monterey vem com Ruby 2.6.8. Se você atualizou ou gerencia versões do Ruby com rbenv, rvm ou outros gerenciadores de versão, poderá encontrar uma versão diferente. Às vezes, você também pode encontrar Ruby no caminho de arquivo /usr/local/bin/ruby, quando ele é instalado com o gerenciador de pacotes Homebrew para macOS.

Onde fica a pasta do Ruby no Mac?

No macOS, o interpretador Ruby costuma estar instalado nativamente nos caminhos de arquivo /usr/bin/ruby ou /usr/local/bin/ruby, dependendo de onde foi instalado. O sistema operacional instala e gerencia as gems do Ruby nativamente no macOS, por isso não é recomendável usar sudo gem install nem fazer alterações nessas gems. Em vez disso, considere instalar um ambiente virtual de Ruby com uma ferramenta como rbenv.

O ambiente virtual de Ruby

Um conceito útil e conhecido em outras linguagens de programação e suas ferramentas é o ambiente virtual de Ruby. Se você já usou o virtualenv do Python ou o nvm do Node.js, a virutalenv do Ruby será fácil de adotar. Para começar, você só precisa de algumas ferramentas do ecossistema Ruby, como rbenv ou rvm.

Essas ferramentas evitam conflitos com a versão nativa do Ruby no Mac: elas baixam o código-fonte do Ruby da internet, compilam-no localmente e o disponibilizam em um caminho. Em seguida, orientam você a adicionar esse novo caminho de diretório ao shell de sua preferência, para que a nova versão do Ruby fique disponível quando você abrir uma nova janela do terminal.

Na prática, são gerenciadores de versões do Ruby que permitem alternar rapidamente entre diferentes versões do runtime, conforme necessário e de acordo com o diretório de instalação do Ruby configurado.

Você deve usar rbenv ou rvm?

Duas ferramentas populares de ambiente virtual para Ruby são rbenv e rvm. Como ferramentas e versões específicas de ambiente tendem a ficar desatualizadas com o avanço do setor, não vou fazer uma comparação detalhada dos recursos de rbenv e rvm1. Em vez disso, pedi a opinião de alguns amigos desenvolvedores experientes em Ruby e escolhi rbenv, que foi a recomendação da maioria.

Outros gerenciadores de ambiente virtual para Ruby que ainda não explorei, mas que vale mencionar, são chruby e ruby-install.

Vamos começar com o rbenv

O projeto de código aberto rbenv está hospedado no GitHub, um ótimo lugar para acompanhar problemas e consultar a documentação atualizada no README do rbenv.

Como instalar o Ruby com rbenv

Assim como acontece com muitas outras ferramentas, vamos usar o popular gerenciador de pacotes Homebrew para macOS. Execute o comando a seguir no terminal:

brew install rbenv ruby-build

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

Para configurar o rbenv no shell, execute o comando a seguir:

rbenv init

Siga as instruções exibidas na tela caso seja necessária alguma configuração adicional. Talvez seja preciso colar um comando no arquivo de configuração do shell. Se você usa macOS e não trocou o Z Shell (ZSH), que é o padrão, adicione a linha de código a seguir no início do arquivo ~/.zshrc:

eval "$(rbenv init - zsh)"

A instalação do rbenv está concluída. Se quiser confirmar que tudo foi configurado corretamente, execute algumas verificações de diagnóstico. Para isso, use a ferramenta rbenv-doctor disponibilizada pelo projeto rbenv no GitHub:

  1. Abra uma nova janela do 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: não execute este comando sem avaliar os riscos: você está direcionando para o shell do seu ambiente de desenvolvimento comandos provenientes de um repositório público e de código aberto no GitHub. É possível que alguém mal-intencionado tenha adulterado o código-fonte. Por isso, recomendamos fortemente que você analise o código com atenção 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 de Ruby! Agora que o rbenv está configurado e funcionando, podemos usá-lo para gerenciar todas as suas versões do Ruby.

Para começar, liste as versões do Ruby disponíveis para instalação e escolha a mais recente ou uma versão específica. Para listar todas as versões do Ruby com o rbenv, execute o comando a seguir:

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

O resultado foi:

2.6.10
2.7.6
3.0.4
3.1.2
jruby-9.3.6.0
mruby-3.1.0
picoruby-3.0.0
rbx-5.0
truffleruby-22.1.0
truffleruby+graalvm-22.1.0

Only latest stable releases for each Ruby implementation are shown.
Use 'rbenv install --list-all / -L' to show all local versions.

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

rbenv install 3.1.2

O comando vai baixar os arquivos de código-fonte necessários, extraí-los e compilá-los para instalar o runtime do Ruby 3.1.2, que ficará disponível no seu shell.

Depois de instalar, defina essa versão como a escolhida sempre que o shell for iniciado. Para isso, execute:

rbenv global 3.1.2

Por fim, você pode confirmar se tudo está funcionando como esperado executando ruby --version no shell. O resultado deve ser semelhante a:

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

Antes de encerrar, uma observação sobre rbenv global. Por causa do nome do comando (global), fiquei preocupado que executá-lo pudesse interferir de alguma forma na versão do Ruby pré-instalada no macOS. Não é o caso. O comando se refere à configuração global do usuário, que fica no arquivo de configuração do rbenv em ~/.rbenv/version, e significa que ela não está vinculada a um projeto ou diretório específico do Ruby.

E agora, o que vem a seguir?

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

Antes de voltar às suas atividades de desenvolvimento com Ruby, confira estes recursos para seguir as práticas recomendadas de codificação segura e manter suas gems do Ruby protegidas contra vulnerabilidades. Eles são úteis tanto para lidar com vulnerabilidades no Ruby on Rails que surgem nas gems do framework quanto com vulnerabilidades de segurança no Ruby em geral.

Recomendo estes recursos sobre desenvolvimento com Ruby e segurança:

Por fim, fique atento à execução remota de código mal-intencionado e a outros riscos de segurança nas gems do Ruby, decorrentes de ataques à cadeia de suprimentos que já observamos em vários ecossistemas, inclusive no Ruby.

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

Comece a jogar Capture the Flag

Aprenda a resolver desafios de Capture the Flag assistindo à gravação sob demanda do nosso workshop virtual introdutório.

Leia mais

Blog

Modelos de ponta encontraram as vulnerabilidades. Só o atacante encontrou as cadeias.

A análise estática encontrou as falhas, mas só os testes de ataque em aplicações ativas provaram como elas poderiam ser encadeadas para causar invasões. Uma comparação entre Evo COS, Claude Security e Claude Code Security.

feature insights context
Blog

Os ataques autônomos já chegaram. A defesa precisa acompanhar o ritmo.

Os atacantes autônomos estão reduzindo o tempo disponível para a defesa. Saiba como a descoberta, a correção, a validação e a prevenção contínuas ajudam as equipes de segurança a acompanhar esse ritmo.

Blog

Por que agentes de programação com IA continuam criando falhas de controle de acesso

Agentes de programação com IA podem gerar uma lógica de autorização que compila e passa pela revisão, mas permite que um tenant acesse os dados de outro. Saiba por que é difícil detectar falhas de controle de acesso e como evitá-las.