Neste guia mostro como fazer a instalação passo-a-passo do ambiente de desenvolvimento do Ruby On Rails RoR no OSX, para dar aquela força pra quem está começando.
A instalação do Ruby eu sempre recomendo que seja via compilação, mas isso não quer dizer que você precisa fazer ‘na mão’.
Neste guia vamos usar o Rbenv: pra gerenciar múltiplas versões do Ruby, e o Ruby-build: ferramenta para compilar o Ruby.
Pra compilar, precisamos dos compiladores(!), no OSX isso quer dizer que você precisa do Xcode ou uma alternativa como o OSX Gcc Installer.
Eu recomendo o Xcode por ser o padrão na plataforma e por usar LLVM, que aumenta o desempenho do código compilado.
Como instalar o Xcode
Acesse a Mac AppStore e faça a instalação do Xcode (~1.6GB) – é gratuita.
Depois de instalado acesse o painel de preferências do Xcode, vá na área de Downloads e instale o “Command Line Tools”, pra disponibilizar as ferramentas de compilação para outras aplicações via linha de comando.
Ok, estamos prontos pra compilar, agora vamos instalar o Homebrew, que super útil não só na instalação do Ruby, mas vários outros pacotes como bases de dados, bibliotecas de imagem, processadores de markup, entre outros.
Como instalar o Homebrew no Mac OSX
Abra o Terminal, e execute este comando:$ ruby -e “$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)”
Embora esse script pessa a sua senha pra instalar o Homebrew, todas as instalações de pacotes são feitas em userspace, oque quer dizer que seu sistema estará protegido – em contraste ao MacPorts.
Terminada a instalação, você já pode usar o Homebrew no terminal:$ brew doctor # testando se o homebrew está ‘saudável’$ brew install rbenv$ brew install ruby-build
Agora você precisa adicionar o rbenv no seu profile, pra que seja carregado em todas as abas do Terminal:$ echo “if which rbenv > /dev/null; then eval “$(rbenv init -)”; fi” > ~/.profile
Feche o seu Terminal, abra novamente, e rode teste este comando pra ver a resposta:$ rbenv
Você deve obter algo assim:123456789101112131415161718rbenv 0.4.0-45-g060f141
Usage: rbenv []
Some useful rbenv commands are:
commands List all available rbenv commands
local Set or show the local application-specific Ruby version
global Set or show the global Ruby version
shell Set or show the shell-specific Ruby version
install Install a Ruby version using the ruby-build plugin
uninstall Uninstall a specific Ruby version
rehash Rehash rbenv shims (run this after installing executables)
version Show the current Ruby version and its origin
versions List all Ruby versions available to rbenv
which Display the full path to an executable
whence List all Ruby versions that contain the given executable
See `rbenv help ‘ for information on a specific command.
For full documentation, see: https://github.com/sstephenson/rbenv#readme
Este outro comando mostra pra você as opções de interpretadores Ruby disponíveis para instalação:12345678910111213141516171819202122$ rbenv install -l
Available versions:
… # removi algumas pra ocupar menos espaço…
1.8.7-p371
1.9.1-p378
1.9.2-p320
1.9.3-p392
1.9.3-preview1
1.9.3-rc1
2.0.0-rc2
2.1.0-dev
jruby-1.7.2
jruby-1.7.3
jruby-1.7.4-dev
maglev-1.0.0
maglev-1.1.0-dev
mruby-dev
rbx-1.2.4
rbx-2.0.0-dev
rbx-2.0.0-rc1
ree-1.8.7-2012.02
… # removi algumas pra ocupar menos espaço…
Para instalar, basta escolher uma versão e rodar o comando:$ rbenv install 1.9.3-p392
O ruby-build – através do rbenv – vai baixar os fontes das dependências e compilar pra você.
Embora já tenhamos um interpretador instalado, ainda não temos configurado o interpretador padrão que o rbenv de usar, resolvemos isso globalmente com este comando:$ rbenv global 1.9.3-p392
Você também pode definir versões específicas por pasta, exemplo:1234$ cd Workspace
$ mkdir meuapp187
$ cd meuapp187
$ rbenv local 1.8.7-p371
Um arquivo .rbenv-version será criado contendo, neste exemplo, ‘1.8.7-p371’.
Agora que já temos uma versão do Ruby definida no rbenv, podemos usar o Rubygems através do comando gem, Gems são pacotes de software Ruby análogos aos Jars do Java. Muitas Gems aumentam nosso poder através do terminal, vamos instalar a mais importante delas, o Bundler:$ gem install bundler
O Bundler é um gerenciador de dependências – análogo ao Maven no Java, mas ele usa um arquivo descritor bem mais simples, o Gemfile:‘Gemfile’1234567891011121314151617181920# Este é o Gemfile deste blog.source”http://rubygems.org”group:developmentdogem'rake','~> 0.9'gem'rack','~> 1.4.1'gem'jekyll','~> 0.12'gem'rdiscount','~> 1.6.8'gem'pygments.rb','~> 0.3.4'gem'RedCloth','~> 4.2.9'gem'haml','~> 3.1.7'gem'compass','~> 0.12.2'gem'sass-globbing','~> 1.0.0'gem'rubypants','~> 0.2.0'gem'rb-fsevent','~> 0.9'gem'stringex','~> 1.4.0'gem'liquid','~> 2.3.0'endgem'sinatra','~> 1.3.5′
Instalar o Rails
Temos tudo que precisamos para instalar o Rails, então mão-na-massa:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103$ gem install rails
Fetching: i18n-0.6.1.gem (100%)Fetching: multi_json-1.7.3.gem (100%)Fetching: activesupport-3.2.13.gem (100%)Fetching: builder-3.0.4.gem (100%)Fetching: activemodel-3.2.13.gem (100%)Fetching: rack-cache-1.2.gem (100%)Fetching: rack-test-0.6.2.gem (100%)Fetching: journey-1.0.4.gem (100%)Fetching: hike-1.2.2.gem (100%)Fetching: sprockets-2.2.2.gem (100%)Fetching: erubis-2.7.0.gem (100%)Fetching: actionpack-3.2.13.gem (100%)Fetching: arel-3.0.2.gem (100%)Fetching: tzinfo-0.3.37.gem (100%)Fetching: activerecord-3.2.13.gem (100%)Fetching: activeresource-3.2.13.gem (100%)Fetching: mime-types-1.23.gem (100%)Fetching: polyglot-0.3.3.gem (100%)Fetching: treetop-1.4.12.gem (100%)Fetching: mail-2.5.3.gem (100%)Fetching: actionmailer-3.2.13.gem (100%)Fetching: rack-ssl-1.3.3.gem (100%)Fetching: thor-0.18.1.gem (100%)Fetching: railties-3.2.13.gem (100%)Fetching: rails-3.2.13.gem (100%)Successfully installed i18n-0.6.1
Successfully installed multi_json-1.7.3
Successfully installed activesupport-3.2.13
Successfully installed builder-3.0.4
Successfully installed activemodel-3.2.13
Successfully installed rack-cache-1.2
Successfully installed rack-test-0.6.2
Successfully installed journey-1.0.4
Successfully installed hike-1.2.2
Successfully installed sprockets-2.2.2
Successfully installed erubis-2.7.0
Successfully installed actionpack-3.2.13
Successfully installed arel-3.0.2
Successfully installed tzinfo-0.3.37
Successfully installed activerecord-3.2.13
Successfully installed activeresource-3.2.13
Successfully installed mime-types-1.23
Successfully installed polyglot-0.3.3
Successfully installed treetop-1.4.12
Successfully installed mail-2.5.3
Successfully installed actionmailer-3.2.13
Successfully installed rack-ssl-1.3.3
Successfully installed thor-0.18.1
Successfully installed railties-3.2.13
Successfully installed rails-3.2.13
25 gems installed
Installing ri documentation for i18n-0.6.1…
Installing ri documentation for multi_json-1.7.3…
Installing ri documentation for activesupport-3.2.13…
Installing ri documentation for builder-3.0.4…
Installing ri documentation for activemodel-3.2.13…
Installing ri documentation for rack-cache-1.2…
Installing ri documentation for rack-test-0.6.2…
Installing ri documentation for journey-1.0.4…
Installing ri documentation for hike-1.2.2…
Installing ri documentation for sprockets-2.2.2…
Installing ri documentation for erubis-2.7.0…
Installing ri documentation for actionpack-3.2.13…
Installing ri documentation for arel-3.0.2…
Installing ri documentation for tzinfo-0.3.37…
Installing ri documentation for activerecord-3.2.13…
Installing ri documentation for activeresource-3.2.13…
Installing ri documentation for mime-types-1.23…
Installing ri documentation for polyglot-0.3.3…
Installing ri documentation for treetop-1.4.12…
Installing ri documentation for mail-2.5.3…
Installing ri documentation for actionmailer-3.2.13…
Installing ri documentation for rack-ssl-1.3.3…
Installing ri documentation for thor-0.18.1…
Installing ri documentation for railties-3.2.13…
Installing ri documentation for rails-3.2.13…
file ‘lib' not found
Installing RDoc documentation for i18n-0.6.1…
Installing RDoc documentation for multi_json-1.7.3…
Installing RDoc documentation for activesupport-3.2.13…
Installing RDoc documentation for builder-3.0.4…
Installing RDoc documentation for activemodel-3.2.13…
Installing RDoc documentation for rack-cache-1.2…
Installing RDoc documentation for rack-test-0.6.2…
Installing RDoc documentation for journey-1.0.4…
Installing RDoc documentation for hike-1.2.2…
Installing RDoc documentation for sprockets-2.2.2…
Installing RDoc documentation for erubis-2.7.0…
Installing RDoc documentation for actionpack-3.2.13…
Installing RDoc documentation for arel-3.0.2…
Installing RDoc documentation for tzinfo-0.3.37…
Installing RDoc documentation for activerecord-3.2.13…
Installing RDoc documentation for activeresource-3.2.13…
Installing RDoc documentation for mime-types-1.23…
Installing RDoc documentation for polyglot-0.3.3…
Installing RDoc documentation for treetop-1.4.12…
Installing RDoc documentation for mail-2.5.3…
Installing RDoc documentation for actionmailer-3.2.13…
Installing RDoc documentation for rack-ssl-1.3.3…
Installing RDoc documentation for thor-0.18.1…
Installing RDoc documentation for railties-3.2.13…
Installing RDoc documentation for rails-3.2.13…
Aqui fica fácil de perceber, o Rails na verdade é um conjunto de Gems especializadas em suas tarefas. O ActiveRecord é responsável pela camada de validação e persistência, e o Sprockets por gerenciar os Assets por exemplo.
Você encontra mais detalhes neste em guides.rubyonrails.org.
Criar uma aplicação Rails para testar a instalação
Vamos criar agora uma aplicação Rails pra testar a instalação:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119$ rails new meuteste
create
create README.rdoc
create Rakefile
create config.ru
create .gitignore
create Gemfile
create app
create app/assets/images/rails.png
create app/assets/javascripts/application.js
create app/assets/stylesheets/application.css
create app/controllers/application_controller.rb
create app/helpers/application_helper.rb
create app/views/layouts/application.html.erb
create app/mailers/.gitkeep
create app/models/.gitkeep
create config
create config/routes.rb
create config/application.rb
create config/environment.rb
create config/environments
create config/environments/development.rb
create config/environments/production.rb
create config/environments/test.rb
create config/initializers
create config/initializers/backtrace_silencers.rb
create config/initializers/inflections.rb
create config/initializers/mime_types.rb
create config/initializers/secret_token.rb
create config/initializers/session_store.rb
create config/initializers/wrap_parameters.rb
create config/locales
create config/locales/en.yml
create config/boot.rb
create config/database.yml
create db
create db/seeds.rb
create doc
create doc/README_FOR_APP
create lib
create lib/tasks
create lib/tasks/.gitkeep
create lib/assets
create lib/assets/.gitkeep
create log
create log/.gitkeep
create public
create public/404.html
create public/422.html
create public/500.html
create public/favicon.ico
create public/index.html
create public/robots.txt
create script
create script/rails
create test/fixtures
create test/fixtures/.gitkeep
create test/functional
create test/functional/.gitkeep
create test/integration
create test/integration/.gitkeep
create test/unit
create test/unit/.gitkeep
create test/performance/browsing_test.rb
create test/test_helper.rb
create tmp/cache
create tmp/cache/assets
create vendor/assets/javascripts
create vendor/assets/javascripts/.gitkeep
create vendor/assets/stylesheets
create vendor/assets/stylesheets/.gitkeep
create vendor/plugins
create vendor/plugins/.gitkeep
run bundle install
Fetching gem metadata from https://rubygems.org/………..
Fetching gem metadata from https://rubygems.org/..
Resolving dependencies…
Using rake (10.0.4)Using i18n (0.6.1)Installing multi_json (1.7.3)Using activesupport (3.2.13)Using builder (3.0.4)Using activemodel (3.2.13)Using erubis (2.7.0)Using journey (1.0.4)Using rack (1.4.5)Using rack-cache (1.2)Using rack-test (0.6.2)Using hike (1.2.2)Installing tilt (1.4.1)Using sprockets (2.2.2)Using actionpack (3.2.13)Using mime-types (1.23)Using polyglot (0.3.3)Using treetop (1.4.12)Using mail (2.5.3)Using actionmailer (3.2.13)Using arel (3.0.2)Using tzinfo (0.3.37)Using activerecord (3.2.13)Using activeresource (3.2.13)Using bundler (1.3.5)Using coffee-script-source (1.6.2)Using execjs (1.4.0)Using coffee-script (2.2.0)Using rack-ssl (1.3.3)Using json (1.7.7)Using rdoc (3.12.2)Using thor (0.18.1)Using railties (3.2.13)Using coffee-rails (3.2.2)Using jquery-rails (2.2.1)Using rails (3.2.13)Installing sass (3.2.9)Using sass-rails (3.2.6)Using sqlite3 (1.3.7)Installing uglifier (2.1.0)Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.
Este comando cria toda a estrutura da aplicação Rails, podemos rodar o servidor e ver o resultado:12345678$ rails server=> Booting WEBrick=> Rails 3.2.13 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach=> Ctrl-C to shutdown server
[2013-05-11 12:23:31] INFO WEBrick 1.3.1
[2013-05-11 12:23:31] INFO ruby 1.9.3 (2013-02-22)[x86_64-darwin12.3.0][2013-05-11 12:23:31] INFO WEBrick::HTTPServer#start: pid=45379 port=3000
Por padrão o rails server ‘sobe’ na porta 3000, basta acessar pelo seu navegador:$ open http://localhost:3000
Bem-vindo à bordo, você instalou o ambiente de desenvolvimento Rails com sucesso!
Não deixe de comentar suas dúvidas na área abaixo.