Há um tempo atrás eu resolvi documentar a maneira na qual eu preparava o meu ambiente Ruby no Ubuntu, pra tentar evitar de ficar horas e horas no Google achando como instalar as coisas.

E não é que deu certo? De lá pra cá eu tive que reinstalar algumas vezes o meu ambiente e não tive dores de cabeça com isso. E pelo número de acessos que eu tenho naquele post, eu acho que ele acabou sendo bastante útil pra outras pessoas também.

Para quem quiser conhecer o post anterior está aqui. Tenho uma outra versão do mesmo post para o Mac OS X 10.8.4 Mountain Lion aqui.

Pois bem, o objetivo deste post é o mesmo, porém em outro SO. O lance aqui é preparar um ambiente de desenvolvimento Ruby on Rails no Mac OS X.

Gostaria de enfatizar apenas que o que você encontrará aqui é uma receita de bolo bem específica. Se você quer saber o que é cada coisa que estamos instalando aqui, então saiba que você está no post errado.

O ambiente terá:

  • Git
  • Gem
  • Ruby
  • RVM
  • RSpec
  • Rails
  • Cliente/Servidor MySQL
  • Outros

Todos os passos abaixo foram testados no Mac OS X 10.13.2 High Sierra. Se você estiver com dúvidas sobre a sua versão então experimente o comando abaixo:

$ sw_vers
ProductName:	Mac OS X
ProductVersion:	10.13.2
BuildVersion:	17C88

Ruby 2 e Gem

Olha só que coisa bacana! O OS X 10.13.2 já vem com o Ruby 2 instalado. Confira:

$ ruby --version
ruby 2.3.3p222

$ gem --version
2.5.2

Eu prefiro sempre trabalhar com a versão mais atual do Ruby, aliás, mais atual de qualquer software. Mas, eu costumo não atualizar o ruby do S.O.. Normalmente dá muita dor de cabeça e não vejo vantagens. Para o desenvolvimento eu usarei o RVM. Daí o processo de instalação de vários Rubies fica bem mais simples. Vamos ver isso mais adiante.

Homebrew, XCode e Git

Infelizmente o OS X não possui um gerenciador de pacotes padrão como o apt-get do Ubuntu. Mas, existe uma boa alternativa chamada Homebrew. Pela pouca experiência que eu tenho neste SO, me parece ser a solução mais adotada. E o melhor: ele é baseado em Ruby + Git.

Para instalá-lo basta executar a linha abaixo:

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Você poderá conhecer mais sobre o Homebrew aqui.

O processo de instalação do homebrew instalará também as ferramentas de linha de comando do XCode. O bom é que ele só fará o download do que precisa. Você pode instalar estas ferramentas também via App Store, mas prepare-se pra ocupar em torno de 2.5GB do seu SSD (e crescendo).

E claro… o homebrew instalará também o Git. Aliás, alguém ainda usa o svn?! Relaxa, pois o download demora.

Ao final da instalação rode:

$ brew doctor

Confira se tudo deu certo:

$ git --version
git version 2.14.3 (Apple Git-98)

$ brew --version
Homebrew 1.5.10
Homebrew/homebrew-core (git revision 3dbe; last commit 2018-03-17)

Instalando o Kdiff 3

Eu realmente gosto do Git, mas tenho que dizer que resolver conflitos através do vim é uma pedreira. Pra isso eu costumo utilizar o Kdiff 3.

$ brew tap caskroom/cask
$ brew cask install kdiff3

Configurando e deixando o Git bonitão

Como o homebrew já instalou o git pra gente (na real ele veio com o XCode), a única coisa que falta é configurá-lo.

Nós precisamos nos identificarmos para o git e vamos aproveitar também para colorir o prompt dele. Para isso abra o arquivo ~/.gitconfig e cole o script abaixo:

$ cd ~
$ vim .gitconfig

[user]
  name = Cezinha
  email = cesar@asseinfo.com.br

[log]
  date = local

[color]
  status = auto
  branch = auto
  interactive = auto
  diff = auto

[difftool "kdiff3"]
  path = /Applications/kdiff3.app/Contents/MacOS/kdiff3
  trustExitCode = false

[difftool]
  prompt = false

[diff]
  tool = kdiff3

[mergetool "kdiff3"]
  path = /Applications/kdiff3.app/Contents/MacOS/kdiff3
  trustExitCode = false

[mergetool]
  keepBackup = false

[merge]
  tool = kdiff3

wget

O wget é uma mão na roda e, infelizmente, ele não vem padrão no Mac.

$ brew install wget

MySQL

Este passo instalará tanto o cliente quanto o servidor MySQL. No meu caso eu uso o MySQL para desenvolvimento na minha máquina local. Se você utiliza outro banco, como por exemplo o SQLite, acredito que este passo não seja importante pra você.

A instalação do MySQL também se dará através do Homebrew:

$ brew install mysql

O processo deve demorar um pouco. Depois disso é só conferir:

$ mysql --version
mysql  Ver 14.14 Distrib 5.7.21, for osx10.13 (x86_64) using  EditLine wrapper

Para colocar o servidor de pé basta usar:

$ mysql.server start

Ou para derrubá-lo:

$ mysql.server stop

Caso queira que o MySQL já carregue junto com o login, basta rodar as duas linhas abaixo:

$ ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

Eu particularmente prefiro acionar manualmente sempre que precisar.

PostgreSQL

Agora vamos instalar tanto o cliente quanto o servidor do PostgreSQL.

Pra isso vamos usar também o brew. Não caia na bobagem de instalar em seu Mac como se fosse um app. Mais pra frente você terá problemas ao compilar a gem PG para usar no Rails. Com o brew tudo fica mais simples.

$ brew install postgresql

Para colocar o servidor de pé basta usar:

$ postgres -D /usr/local/var/postgres

Caso queira que o PostgreSQL já carregue junto com o login, basta rodar as duas linhas abaixo:

$ ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

asdf

Quando o mundo era mais simples e a única complicação que eu tinha era ter diversas versões de Ruby e Gemsets eu usava o RVM.

Nos dias de hoje é muito comum você ter que lidar com diversas versões de diversas linguagens ao mesmo tempo e nesse cenário, o RVM já não é mais tão eficiente.

E para nos salvar temos o asdf.

Eu gosto dele pois posso tiver diversas versões de Ruby e também de Node.js. Você pode conhecer um pouco mais da ferramenta através deste post do Akita.

Vamos a instalação:

$ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.4.3
$ echo -e '\n. $HOME/.asdf/asdf.sh' >> ~/.bash_profile
$ echo -e '\n. $HOME/.asdf/completions/asdf.bash' >> ~/.bash_profile

Feche o seu terminal e abra novamente para que as modificações tenham efeito.

Agora você precisa instalar o plugin de cada linguagem que você utiliza. No meu caso eu instalarei o do Ruby e do Node.js.

$ asdf plugin-add ruby https://github.com/asdf-vm/asdf-ruby.git
$ asdf plugin-add nodejs https://github.com/asdf-vm/asdf-nodejs.git

Com o comando abaixo você atualiza todos os plugins instalados:

$ asdf plugin-update --all

Bora lá instalar o Ruby e o Nodejs.

Ruby dentro do asdf

Lembra que um pouco mais cedo eu escrevi que o Ruby já vinha com o OS X, mas o mesmo provavelmente não seria do seu agrado? Então, agora você pode instalar o Ruby que você precisar dentro do RVM sem zoar com o Ruby default do SO.

Vamos instalar o Ruby 2.2.9:

$ asdf install ruby 2.2.9

Se você quiser instalar outra versão, basta usar o asdf install novamente. Veja só como faríamos se quiséssemos instalar o Ruby 2.2.1:

$ asdf install ruby 2.2.1

Depois podemos consultar todas as versões de Ruby instaladas com o comando abaixo:

$ asdf list ruby

Para deixar o Ruby 2.2.9 como default faça o seguinte:

$ asdf global ruby 2.2.9

Se você abrir um novo terminal e digitar o comando abaixo, verá que o Ruby 2.2.9 ficou disponível como padrão:

$ ruby --version
ruby 2.2.9p480 (2017-12-15 revision 61259) [x86_64-darwin17]

Você pode consultar ainda quais versões do Ruby estão a sua disposição para serem instalados:

$ asdf list-all ruby

Se você só usa uma versão do Ruby em todos os seus projetos, a opção global deve resolver o seu problema.
Mas, se você precisar de uma versão diferente do Ruby em uma determinada pasta, basta usar o comando abaixo:

$ asdf local ruby 2.2.1

Este comando gerará o arquivo .tool-versions no qual indicará para o asdf que ele deve usar a versão do Ruby que você especificou.

Ei! Chega de explicações. Como disse anteriormente, este post não tem como objetivo ensinar a usar nada, ok? Apenas instalar.

Nodejs dentro do asdf

Vamos instalar o Nodejs 6.11.3:

$ brew install coreutils
$ brew install gpg
$ bash ~/.asdf/plugins/nodejs/bin/import-release-team-keyring
$ asdf install nodejs 6.11.3
$ asdf global nodejs 6.11.3

Rails

Vamos instalar agora o Rails dentro do asdf para o Ruby 2.2.9 (no qual é o global neste momento).

$ gem install rails --version=5.0.6

Aguarde um pouco até o processo terminar. Isso pode demorar.

Teste agora o Rails:

$ rails --version
Rails 5.0.6

Deixando tudo mais colorido…

Este passo não é tão importante, mas é bacana. Ele irá deixar o seu shell mais estilizado. Ele ficará colorido, mostrará a versão do ruby do RVM, mostrará o branch do git e o nome do diretório. Segue abaixo o que você deve colar em seu .bash_profile:

$ cd ~
$ vim .bash_profile

..
# Colorindo o ls e o grep
export GREP_OPTIONS="--color=auto"
export GREP_COLOR="4;33"
export CLICOLOR="auto"

# ls / ll
alias ls="ls -G"
alias ll="ls -l"

# Mostrar o git no prompt
# Origem: http://www.developerzen.com/2011/01/10/show-the-current-git-branch-in-your-command-prompt/

function parse_git_branch () {
       git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}

RED="\[\033[0;31m\]"
YELLOW="\[\033[0;33m\]"
GREEN="\[\033[0;32m\]"
NO_COLOUR="\[\033[0m\]"

PS1="$GREEN\u@machine$NO_COLOUR:\w$YELLOW\$(parse_git_branch)$NO_COLOUR\$ "

Você encontrará diversas versões deste script na web.

Bonus: aumente o tamanho da fonte do seu terminal

Eu gosto de trabalhar com a fonte do terminal bem grande. Aí vai:

Terminal -> Preferences
Ajustes -> Texto -> Fonte -> Menlo Regular 20pt

Pronto! Agora é só começar a trabalhar.

Espero que goste.