Configurando um ambiente de desenvolvimento Ruby on Rails 5.x no Mac OS X 10.13.2 High Sierra
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.