Instalação do Ruby on Rails no MacOS

Instalação do Ruby on Rails no MacOS
railsplusmac

Escrevo abaixo os passos para instalar e configurar o Ruby on Rails em um MacBook ou qualquer outro tipo de Mac que tenha o MacOS Leopard ou Superior. Todo o processo descrito aqui foi realizado em um MacOS Lion. A ideia neste artigo não foi de cobrir somente os passos básicos ou o modo ideal para instalar o Ruby on Rails mas sim, mostrar a instalação e alguns possíveis problemas e soluções que talvez possam ocorrer.

É importante notar que o MacOS a patir do LEOPARD já vem com o Ruby e o Gem instalados por padrão. Você pode verificar no terminal, experimente digitar ruby -v ou gem -v. No entanto, o Rails não vem instalado por padrão, assim é necessário instalar! O Rails apesar de ser um grande framework que abriga outros menores é considerado uma gem assim, ele pode ser instalado como qualquer outra gem. O comando para instalar o Rails no Mac (ou qualquer outro SO) na linha de comando é o seguinte:

[bash] gem install rails [/bash]

Este comando consulta os principais repositórios do Rails na Internet em busca da versão mais recente do Framework e instala o mesmo. No entanto, é possível escolher ainda qual versão do Rails será instalada, para isso, você utiliza o seguinte comando comando:

[bash] gem install rails -v 3.2.8 [/bash]

Acredito que escolher a versão do Rails somente é necessária se existir alguma necessidade muito específica do contrário é aconselhável instalar a versão mais recente. Abaixo o print screen do comando:

instalar-ruby-on-rails

Ao executar o comando acima deu o seguinte erro: “Error: While executing gem ... (Gem::FilePermissionError) You don’t have write permissions into the /Library/Ruby/Gems/1.8 directory”, conforme pode ser observado na imagem abaixo:

erro-ruby-on-rails

O erro acima é explicável: o problema é que o comando foi executado com um usuário sem privilégios!! Assim o que precisa ser feito é colocar o comando “sudo” antes do comando gem, a sintaxe resultante é a seguinte: “sudo gem install rails”. Mesmo assim não adiantou, veja na imagem abaixo o erro que apareceu:

erro-instalacao-ruby-on-rails

Parece que o gem padrão do mac vem com algumas url's quebradas. Mas isso é um engano! O problema é que o firewall do mac estava ligado, então somente para realizar a instalação do Rails eu desliguei o firewall e.... outra mensagem de erro apareceu:

[bash] key:ror key$ sudo gem install rails ERROR:  Error installing rails: activesupport requires i18n (= 0.6.1, runtime) [/bash]

Bom pelo menos o problema de não acessar o rubygems.org parece que foi resolvido!! Pelo que parece o erro está dando porque o “i18n” não está instalado, então vamos instalar! O comando é o seguinte: “sudo gem install i18n” e mais uma surpresa:

[bash] ERROR:  could not find gem i18n locally or in a repository [/bash]

Outra mensagem de erro. Comparando as mensagens de erro podemos observar que elas têm algo em comum que é a impossibilidade de encontrar as gems, mesmo com o firewall desabilitado. Bom realmente algo curioso, até porque o Ruby já estava cadastrado por padrão como uma exceção para acessar a Internet sem passar pelo firewall, assim o problema não poderia ser este.

Deste modo, deixei habilitado o firewall normalmente e fui investigar mais a fundo o que poderia estar acontecendo. Ao verificar as versões do gem do Ruby eu pude constatar que não são as atuais, assim resolvi atualizar tudo! A primeira coisa foi atualizar o gem com os comandos “gem install rubygems-update” e depois “update_rubygems”, mas novamente eu tive o mesmo problema ao acessar a rede. Como resultado, resolvi atualizar o gem na unha! O processo de atualização manual do gems está descrito no final da página de suporte deste link: http://rubygems.org/pages/download#formats. Depois do gem atualizado, fui tentar instalar o Rails mais uma vez e mais uma vez.... a mesma mensagem de erro. Bom como o gem já estava atualizado imaginei que o causador do problema poderia ser o próprio Ruby, pois o que eu tinha era a versão 1.8. Com o gem indisponível eu tive que atualizar o Ruby manualmente, porém o processo é um pouco complicado. Assim, acabei encontrando um programa muito legal de suporte a pacotes chamado RVM (Ruby Version Manager) que faz todo o trabalho braçal de forma automática. O RVM é um verdadeiro canivete suíço e profundamente útil, assim sugiro você a instalá-lo!! Por exemplo: com o RVM você pode ter quantas versões do Ruby que você desejar na sua máquina, na linha de comando através do RVM você escolhe qual a versão do Ruby a ser utilizada, além disso o RVM faz a instalação e atualização de pacotes, bibliotecas do Ruby e muito mais! Bom voltando ao assunto, ao tentar atualizar o Ruby através do RVM, mais uma vez a mensagem de erro  informando que não conseguiu acessar os repositórios. Bom resolvi atualizar o RVM mais uma vez com o comando “sudo rvm get stable” e mais uma vez um erro de acesso aos repositórios! [bash] curl: (6) Could not resolve host: get.rvm.io; nodename nor servname provided, or not known RVM reloaded! [/bash]

Para a mensagem de erro acima,  investiguei um pouco e encontrei uma dica de um programador no Stack Overflow bastante curiosa. A dica é para utilizar os servidores de DNS do Google no lugar do meu DNS padrão fornecido pela minha provedora de Internet. Então fui nas configurações avançadas de rede do Mac e adicionei os dois endereços IPs dos servidores de DNS público do Google. Feito isso, fui no terminal e executei o seguinte comando “sudo rvm get stable” novamente e tudo funcionou perfeitamente, veja o resultado na imagem abaixo.

atualizacao-do-rvm

O RVM atualizou tudo perfeitamente! O problema pelo que parece estava no DNS da minha provedora de Internet, nunca tive problemas com isso, mas como mencionei, utilizando o DNS do Google solucionou o problema!

Realmente muito legal, agora o próximo passo foi dar reset no RVM com o comando “rvm reload” e depois realizar a atualização do Ruby, para isso, primeiro executei o comando “rvm list known” para listar todas as versões disponíveis no repositório e assim eu pude encontrar a mais nova. O segundo passo foi executar o comando “sudo rvm install 1.9.3”, o 1.9.3 é a última versão estável que eu pude conferir no comando anterior. A instalação da nova versão do Ruby demora um pouquinho mas é normal, então espere!! Bom, desta vez deu vários errinhos mas lendo todos deu para entender um pouco, confira no print abaixo quais foram:

erros-na-instalacao-do-ruby

Bom a primeira coisa que foi pedida acima é para atualizar o Homebrew eu fiz com o comando “brew update”, assim tudo foi atualizado. Se você não tiver o Homebrew no seu Mac faça a instalação! E tenha instalado também o Git, isso é altamente importante para tudo funcionar corretamente no Ruby on Rails! Voltando ao assunto... Depois de atualizar o brew o próximo passo foi executar o comando “sudo rvm autolibs enable”. Agora o próximo passo, é resolver os erros destacados em vermelho, o principal é com relação ao GCC. No Lion o GCC (compilador C) não é utilizado mais, pois foi substituído pelo LLVM. A instalação do GCC pode ser feita pelo brew, mas antes tem que dar mais uma melhorada nele! O primeiro passo é executar os comandos abaixo:

[bash] ls -al /usr/local/bin/brew #Para verificar quem é o dono atual do brew e a qual grupo pertence. sudo chown root:wheel /usr/local/bin/brew [/bash]

Estes comandos resolvem um problema do brew que não consegue dar sudo (não sei o motivo disso). Caso você achar uma falha de segurança deixar o brew como pertencente ao grupo do root depois de instalar tudo, você pode reverter com o seguinte comando “sudo chown <MEU USUARIO>:<MEU GRUPO> /usr/local/bin/brew”.

Depois disso, o GCC pode ser instalado com o comando “sudo brew install apple-gcc42” tudo será instalado e ao final você será presenteado com um belo copo de cerveja!

instalar-gcc-brew

Agora os outros erros listados na parte destacada em vermelho acontecem por causa que o Command Line Tools (CLT) do XCode não está instalado, assim é necessário instalar http://www.moncefbelyamani.com/how-to-install-xcode-homebrew-git-rvm-ruby-on-mac/ . Se você tiver o Xcode instalado você só precisa ir em preferences -> Downloads e instalar o Command Line Tools! Agora se você não tiver o Xcode instalado ainda, você infelizmente terá que instalar e o tamanho do pacote é de 1.5GB!! Antes a Apple disponibilizava somente o CLT para downloads, mas fui procurar no developer.apple.com e não encontrei no site então como eu disse, o XCode precisou ser instalado todo!! Depois disso dê o comando “sudo rvm requirements”, o RVM vai começar a instalar as dependências é um processo bem demorado. Se ao final ele exibir alguma mensagem de erro, não se desespere vai executando o comando “sudo rvm requirements” até parar de dar os erros! Isso ocorre porque dependendo de sua velocidade de conexão na Internet algum pacote não é baixado, assim se executar o comando mais de uma vez ele termina de baixar os pacotes que ficaram faltando.

Finalmente vamos instalar a nova versão do Ruby com o comando “sudo rvm install 1.9.3 --with-gcc=gcc-4.2” eu especifiquei o GCC no final para forçar a usar este ao invés de outros. Feito isso, a nova versão do Ruby 1.9.3 começa a ser instalada. Confira abaixo o resultado:

atualizacao-rvm-mac

A única mensagem em vermelho que deu foi somente um aviso informando que escolhi o GCC manualmente. Agora para atestar que deu tudo certo podemos digitar o comando “rvm list” e o novo Ruby tem que aparecer listado:

status-rvm-mac

Que coisa linda! Agora só é preciso setar o novo Ruby como default com o comando “rvm --default use 1.9.3” a resposta será Using /usr/local/rvm/gems/ruby-1.9.3-p392. Para tirar a prova final podemos verificar a versão atual do Ruby com o comando “ruby -v” e a reposta é”: ruby 1.9.3p392 (2013-02-22 revision 39386) [x86_64-darwin11.4.2]. MARAVILHA!! Caso você quiser voltar para a versão antiga do Ruby só dar o comando “rvm use system” e para voltar para a versão nova só dar o comando “rvm default” e pronto! Caso você executar o “rvm list” aparecer a mensagem que a versão nova do Ruby não é a default é porque seu usuário não está no grupo “rvm” na gerência de usuários em “system preferences” no mac você pode adicionar seu usuário ao grupo rvm, feito isso só rodar o comando para escolher qual o Ruby será o default, conforme acima e pronto. Para finalizar e deixar tudo perfeito vamos executar o comando “brew doctor” para ver se está tudo correto, ou precisa fazer mais alguma coisa. Apareceu uns erros de permissão em uns diretórios que eu resolvi com os seguintes comandos:

[bash] sudo chown MEU_USUARIO /usr/local/include #talvez o caminho seja diferente para você sudo chown MEU_USUARIO /usr/local/lib #talvez o caminho seja diferente para você [/bash] Feito isso o último erro para ser corrigido é com relação ao path pois eu tive a seguinte mensagem: [bash] Warning: /usr/bin occurs before /usr/local/bin This means that system-provided programs will be used instead of those provided by Homebrew. The following tools exist at both paths: c++-4.2 cpp-4.2 g++-4.2 gcc-4.2 gcov-4.2 &nbsp; Consider amending your PATH so that /usr/local/bin occurs before /usr/bin in your PATH. [/bash]

Olhando a mensagem acima, está a dica de como resolver, só arrumar o meu arquivo de configuração de ambiente conforme sugerido e pronto! Para isso como usuário root digitei o comando “vi /etc/paths” para abrir o arquivo paths no editor Vi e alterei a ordem dos caminhos conforme o esquema abaixo:

[bash] /usr/local/bin /usr/local/sbin /usr/bin /bin /usr/sbin /sbin [/bash]

Depois salvei e sai do Vi e pronto! Fechei o terminal e abri novamente para o arquivo com os caminhos ser lido novamente. Vamos ver como ficou agora a checagem de erros:

brew-doctor-mac

Apareceu somente o erro do XCode que não resolvi pois,  é uma mensagem falando que estou utilizando a versão 3.2 e já tem a 4.6 mas como é um caminhão gigante que não vou utilizar decidi ficar com a 3.2 que já tinha o instalador no meu Mac. Caso você quiser instalar o XQuartz que substitui o antigo Image Magic clique aqui.

Levando em conta os passos adicionais acima, podemos instalar o rails! Vá no terminal e entre com o seguinte comando “gem install rails bundler” que vai instalar o Rails e o Bundler de uma vez só. E agora o belo resultado:

rails-e-bundler

O esforço valeu a pena! Para conferir se o Rails está em funcionamento só digitar o comando “rails -v” e o resultado é “Rails 3.2.13” como podemos ver está em funcionamento. Como última dica vou sugerir aqui um pequeno servidor para o Rails. O nome do servidor é POW e ele é simplesmente demais, pois é muito simples de utilizar e não precisa de configurações complexas, instalação de módulos nada!! Para instalar digite no terminal o comando: “curl get.pow.cx | sh”, feito isso o servidor do Rails já vai ser baixado, instalado e configurado!! A instalação só vai pedir para você informar a senha de root e pronto. Confira a imagem abaixo do terminal:

instalando-pow-rails

Legal né? Para ver se realmente o servidor está funcionando podemos ver em nosso próprio navegador:

pow-em-funcionamento

Em caso de você estiver com o XAMPP instalado é bom dar um stop no Apache antes de iniciar o Pow.

Bom é isto, espero que este tutorial tenha sido útil. Nos próximos pretendo colocar outras dicas. Dúvidas favor deixar nos comentários.