Muitas pessoas acabam se frustrando com a instalação do Ruby / Rails quando utilizam o RVM ou o Rbenv, e principalmente na utilização desses dois para uma máquina em produção.
O motivo principal das muitas dores de cabeça é que ambas soluções funcionam alterando variáveis de ambiente da sua shell para disponibilizar algo que o sistema operacional deveria estar fazendo nativamente.
Existem situações em que usar o RVM, principalmente em ambiente de desenvolvimento é desejável, permitindo trocar de versões rapidamente e testar o código, patches de seguranças. Este artigo não quer desmerecer os usos válidos do RVM, mas se ele está te dando dores de cabeça, talvez uma solução mais simples seja o caso.
A solução proposta aqui é utilizar os padrões que o Ubuntu / Debian definiram, ou seja: Debian Packages para instalar o ruby e Update Alternatives (links simbólicos) para trocar entre as versões de ruby disponíveis.
A instalação é composta de alguns poucos comandos. Se você estiver utilizando um ubuntu server, existe um pacote adicional que precisa ser instalado, pois o mesmo não vem instalado por padrão:
sudo apt-get install python-software-properties
Para Ubuntu 12.10+ utilize o comando abaixo:
sudo apt-get install software-properties-common
O comando acima disponibiliza o “add-apt-repository“.
Para prosseguir com a instalação, vamos adicionar um ppa mantido pela Brightbox, uma empresa de hosting especializada em Ruby, do Reino Unido, e realizar a instalação dos pacotes necessários:
sudo apt-add-repository ppa:brightbox/ruby-ng sudo apt-get update sudo apt-get install build-essential ruby rubygems ruby-switch
Os comandos acima, instalam a versão mais atualizada do ruby 1.8.7 e o comando “ruby-switch” que será responsável por trocar a versão do ruby sendo utilizada no momento, da mesma forma como o RVM e o Rbenv fazem.
Para instalar a versão 1.9.3, você deve rodar o comando a seguir (note que 1.9.1 é um padrão de numeração de versão utilizada pelo Debian, mas acredite, estamos instalando a 1.9.3)
sudo apt-get install ruby1.9.1-full
E por fim, para alterar entre as versões:
sudo ruby-switch --set ruby1.9.1 sudo ruby-switch --set ruby1.8
Bonus: ao utilizar a versão 1.9.3 disponibilizada pela Brightbox, você estará utilizando uma versão otimizada da mesma, que inclui entre outras coisas, as seguintes modificações:
- Compilado com tcmalloc (Google’s high performance memory allocator)
- Usando os patches de performance do Sokolov Yura
- Narihiro Nakamura’s Bitmap Marking garbage collector (backported by Sakolov Yura)
Este ultimo é o meu favorito, quem ainda não leu o artigo linkado acima, deveria. O novo garbage colector da 2.0 em um resumo simplista, vai economizar muita memória no servidor em comparação com a versão 1.9.3, no entanto, graças a esse backport, você ganha a mesma melhoria já na 1.9.3
Atualizado 23/05/2013: Fiz alguns ajustes no artigo para incluir correções necessárias para funcionar também no Ubuntu 12.10+. Agora sugiro instalar o pacote “ruby-1.9.1-full” que resolverá a falta do “mkmf”que algumas gems necessitam.
Pingback: Instalação do Nginx + Passenger no Ubuntu 12.04 via apt-get | Gabriel Mazetto (BrodocK)