Rails: instalando e executando! (Linux)

Assim como eu, você já deve ter ouvido falar em Rails, muito provavelmente em Ruby on Rails, e talvez em Ruby. Eu também ouvi falar bastante deste assunto algum tempo atrás e resolvi estudá-lo melhor. Logo de cara encontrei vários problemas para instalar o Ruby e o Rails no linux (Mint/Ubuntu e derivados). Utilizar ‘sudo apt-get’ não funcionava, erros aconteciam ao executar comandos simples, tutoriais não indicavam o caminho completo… enfim, quase desisti.

Como no linux ou é extremamente fácil de instalar, ou então é extremamente difícil, acabei procurando informações de várias fontes, até comprei um livro que prometia ensinar a instalar o Rails, mas que mandava buscar no Google! (é sério) Por fim, acabei encontrando uma solução para o problema. E esse é o objetivo deste post, mostrar como instalar Ruby e Rails no seu Ubuntu (também testei no Mint).

Sobre Ruby e Rails

“Ruby é uma linguagem dinâmica, open source com foco na simplicidade e na produtividade.” [1] Ou seja, com ruby você faz muito com pouco código. Para saber mais sobre Ruby, basta acessar [1] ou então ficar ligado aqui nos próximos post.

“Ruby on Rails é um framework de desenvolvimento web (gratuito e de código aberto) otimizado para a produtividade sustentável e diversão do programador.” [2] Assim como o Ruby, Rails também é voltado para produtividade, utilizando conceitos como Convenção ao invés de configuração (Convention over Configuration – CoC) [3], Não repita a si mesmo (Don’t Repeat Yourself – DRY) [4], entre outros.

Nos próximos posts eu vou procurar falar um pouco mais sobre a fundamentação do Ruby e do Rails, por hora vamos instalar tudo que precisamos.

Começando antes do começo

Antes de instalar o Ruby propriamente dito precisamos pegar alguns pacotes que serão necessários. Por tanto, abra o terminal e faça o procedimento padrão para instalação dos pacotes:

  • zlib1g
  • zlib1g-dev
  • build-essential
  • openssl
  • libssl-dev
  • libmysqlclient16-dev
  • $>sudo apt-get install zlib1g zlib1g-dev build-essential openssl libssl-dev libmysqlclient16-dev
    

    Pronto, após baixar todos os pacotes, vamos ao Ruby!

    Instalando o Ruby

    Neste passo existem duas opções, uma delas é baixar o ruby do repositório da distribuição Linux, com ‘sudo apt-get install’. A outra é baixar o código fonte, compilar e instalar. Vamos optar pela segunda, pois assim utilizaremos a versão mais recente e evitaremos uma série de problemas. Vocês vão ver o quão difícil é fazer isso 😀

    Acesse http://www.ruby-lang.org/pt/ e clique no botão “Download Ruby”. Na próxima página, na seção “Código-Fonte do Ruby”, será possível ver a última versão estável com o link para download, no meu caso ‘Ruby 1.9.2-p290’. Baixe o arquivo em qualquer lugar e extraia o conteúdo.

    Agora vá no terminal e acesse a página recém criada pela extração. Aqui eu salvei o arquivo na pasta de downloads do meu usuário, então fica assim:

    $>cd /home/marcos/Downloads/ruby-1.9.2-p290/
    

    Dentro da pasta, execute os seguintes comandos, nessa ordem:

    $>./configure
    $>sudo make
    $>sudo make install
    

    Vai demorar um pouco…

    Pronto! Você compilou e instalou um programa no seu computador! Eu falei que ia ser difícil.

    Para testar se deu tudo certo, vá no terminal e verifique a versão do ruby, no meu caso:

    $>ruby -v
    ruby 1.9.2p290 (2011-07-09 revision 32553) [i686-linux]
    

    Hora das Gems!

    Com o ruby instalado, precisamos instalar o RubyGems. “Rubygems é o serviço de hosting de gem da comunidade Ruby” [5] O Rubygems é como um repositório de gems do Ruby. “Gem é uma aplicação ou biblioteca Ruby empacotada” [6] Ou seja, é como as bibliotecas e APIs de Ruby são utilizadas, como exemplo o Rails. Assim, o Rubygem fornece uma maneira muito fácil de baixar e atualizar as suas Gems.

    Para instalá-lo, precisamos mais uma vez baixar o código e compilar, mas agora será bem mais fácil. Acesse http://rubygems.org/ e clique em ‘Install RubyGems 1.8.15’ (a versão pode ser diferente). Na próxima página clique no botão ‘TGZ’ ou ‘ZIP’ para baixar o código do RubyGems. Após o download, extraia o pacote e vá no diretório recém criado novamente, no meu caso:

    $>cd /home/marcos/Downloads/rubygems-1.8.15/
    

    Agora vamos instalar o RubyGems, mas desta vez utilizando o seu novo interpretador Ruby! Dentro da pasta execute:

    $>sudo ruby setup.rb
    

    Espere terminar e pronto! Os programas ruby geralmente são instalados assim, a partir de um arquivo setup.rb, de maneira semelhante aos do python, que utilizam um setup.py.

    Depois de instalar, verifique a versão para saber que está tudo ok:

    $>gem -v
    1.8.15
    

    Agora sim o Rails!

    Agora podemos tranquilamente instalar o Rails, basta utilizar o RubyGems! No terminal, execute:

    $>sudo gem install rails
    

    Vai demorar um pouco, você vai achar que travou, mas é assim mesmo. Depois de um tempo teremos o incrível Rails instalado!

    Para testar, verifique a versão (de novo):

    $>rails -v
    Rails 3.2.1
    

    Tá quase lá!

    O Rails utiliza como banco de dados padrão o SQLite3, por tanto precisamos baixar e instalar mais alguns pacotes, no terminal execute:

    $>sudo apt-get install sqlite3 libsqlite3-dev
    ...
    $>sudo gem install sqlite3
    ...
    

    Caso queira utilizar o MySql basta fazer o seguinte:

    $>sudo apt-get install mysql-client-5.1 mysql-server-5.1
    ...
    $>sudo gem install mysql2
    ...
    

    Outros BDs seguem a mesma ideia, basta verificar quais são os pacotes necessários e qual a gem trabalha com o BD.

    Algumas outras Gems são necessárias em projetos Rails para que seja executado o código JavaScript, portanto instale também as gems ‘execjs’ e ‘therubyracer’:

    $>sudo gem install execjs
    ...
    $>sudo gem install therubyracer
    ...
    

    Pronto! Tudo certo. Vamos então botar o servidor no ar?

    Executando o Rails!

    Criar um novo projeto com rails é muito fácil, no terminal vá para o diretório do seu workspace e execute:

    $>rails new app -d=mysql
    

    Esse comando vai criar uma nova pasta, chamada ‘app’, contendo o seu aplicativo. Note a opção ‘-d=mysql’, nela indicamos que o banco a ser utilizado é o mysql, caso não coloque esta opção será utilizado SQLite.

    Vai demorar também, mas não travou, pelo menos não deveria… Se der alguma mensagem de erro basta ver o que causou o erro e verificar se você instalou tudo certinho (Nos testes que fiz não aconteceu nada, mas vai saber né :)).

    Após todo o processo, o Rails vai ter criado pra você um projeto completo, com pastas para agrupar testes, migrações de banco, etc. Vamos então continuar o processo. Pelo terminal entre na pasta ‘app’ e execute o comando:

    $>cd app/
    $>sudo bundle install
    

    Esse comando vai instalar alguma coisa que tiver faltando, ou atualizar as dependências do seu projeto. Se você quiser utilizar alguma gem, mas ainda não baixou, basta editar o arquivo ‘Gemfile’ (um arquivo com as dependências do projeto), na raiz do projeto, que o comando ‘bundle install’ vai instalar ela pra você. Por exemplo, caso você não tenha instalado o ‘execjs’ e o ‘therubyracer’ bastaria alterar o arquivo e adicionar as seguintes linhas:

    gem 'execjs'
    gem 'therubyracer'
    

    Depois disso, ao executar ‘bundle install’ as gems serão instaladas e atualizadas. Bem útil não?

    Após este processo, vamos finalmente botar o servidor pra funcionar! Não, ainda não…

    Configurando o BD

    Antes de ligar o servidor, precisamos configurar o seu bd. Caso tenha utilizado o SQLite não precisa fazer nada. No caso o MYSql precisamos dar a senha do banco para a aplicação. Para tanto edite o arquivo app/config/database.yml:

    $>gedit config/database.yml
    

    O Rails utiliza três base de dados para a aplicação, uma para desenvolvimento, uma para testes e outra para produção (nos próximos posts eu procuro explicar melhor isso). Então neste arquivo tem ‘development:’, ‘test:’ e ‘production:’, abaixo deles tem a configuração do banco em cada ambiente. Precisamos então dar a senha para a aplicação, como exemplo, veja a minha configuração de ‘development:’

    development:
      adapter: mysql2
      encoding: utf8
      reconnect: false
      database: myapp_development
      pool: 5
      username: root
      password: senha
      socket: /var/run/mysqld/mysqld.sock
    

    Basta colocar a senha ao lado do campo ‘password:’, lembrando de deixar o espaço na frente!

    Feito isso vamos criar os bancos de dados. O Rails possui uma ferramente chamada Rake, que automatiza tarefas [7], no nosso caso vamos utilizar a tarefa de criação do banco, vá na pasta do projeto e execute:

    $>rake db:create
    

    Pronto, tudo certo com o banco. Se quiser verifique as databases criadas no seu banco (mysql> show databases;), deve ter ‘app_test’, ‘app_development’ e ‘app_production’.

    Agora sim! Executando o Rails!

    Pronto, chega de instalar, configurar, e sei lá mais o que. Pois é, lembre que tudo isso só é feito uma vez, depois você pode criar quantas aplicações quiser. Agora vá na pasta do projeto e execute o servidor!

    $>rails server
    

    Pronto, agora basta abrir o browser e ir em http://localhost:3000 (3000 é a porta padrão que o rails utiliza). Se deu tudo certo você verá uma mensagem ‘Welcome aboard’ na página com algumas figurinhas e links interessantes.

    Nos próximos posts eu vou tentar explicar o projeto Rails, banco de dados, entre outros assuntos, sempre com exemplos, pra não ficar muito chato. Se quiser ir treinando antes, basta dar uma olhada nas referências ai em baixo e fuçar na internet.

    Não perca os próximos posts!

    Se gostou do post compartilhe com seus amigos e colegas, senão, comente o que pode ser melhorado. Encontrou algum erro no código? Comente também. Possui alguma outra opinião ou alguma informação adicional? Comenta ai! 😀

    Referências:

    [1] http://www.ruby-lang.org/pt/
    [2] http://rubyonrails.com.br/
    [3] http://en.wikipedia.org/wiki/Convention_over_configuration
    [4] http://en.wikipedia.org/wiki/Don’t_repeat_yourself
    [5] http://rubygems.org/
    [6] http://docs.rubygems.org/read/chapter/1
    [7] http://www.akitaonrails.com/2009/02/16/automatizando-tarefas-com-ruby-e-rake

    Anúncios

    8 comentários sobre “Rails: instalando e executando! (Linux)

    1. Ae cara primeiramente parabens pelo tutorial.

      Estou com um problema aqui. quando executo o comando

      sudo gem update –system

      recebo este erro:

      Updating rubygems-update
      Successfully installed rubygems-update-1.8.18
      Installing RubyGems 1.8.18
      /usr/local/lib/ruby/gems/1.9.1/gems/rubygems-update-1.8.18/lib/rubygems/psych_tree.rb:3:in `’: uninitialized constant Psych::Visitors (NameError)
      from /usr/local/lib/ruby/gems/1.9.1/gems/rubygems-update-1.8.18/lib/rubygems/psych_tree.rb:1:in `’
      from /usr/local/lib/ruby/gems/1.9.1/gems/rubygems-update-1.8.18/lib/rubygems/custom_require.rb:36:in `require’
      from /usr/local/lib/ruby/gems/1.9.1/gems/rubygems-update-1.8.18/lib/rubygems/custom_require.rb:36:in `require’
      from /usr/local/lib/ruby/gems/1.9.1/gems/rubygems-update-1.8.18/lib/rubygems.rb:667:in `load_yaml’
      from /usr/local/lib/ruby/gems/1.9.1/gems/rubygems-update-1.8.18/lib/rubygems/config_file.rb:235:in `load_file’
      from /usr/local/lib/ruby/gems/1.9.1/gems/rubygems-update-1.8.18/lib/rubygems/config_file.rb:178:in `initialize’
      from /usr/local/lib/ruby/gems/1.9.1/gems/rubygems-update-1.8.18/lib/rubygems/gem_runner.rb:78:in `new’
      from /usr/local/lib/ruby/gems/1.9.1/gems/rubygems-update-1.8.18/lib/rubygems/gem_runner.rb:78:in `do_configuration’
      from /usr/local/lib/ruby/gems/1.9.1/gems/rubygems-update-1.8.18/lib/rubygems/gem_runner.rb:51:in `run’
      from setup.rb:38:in `’

      já procurei na net mas as soluções encontradas não resolveu.
      Tem alguma ideia do que pode ser.

      Sou programador java e gostei bastante do ruby. Quero aprender agora.

      Valeu

      • Rapaz, pelo que parece você já tem o rubygem instalado e tá tentando atualizar né? Tenta então remover o atual e instalar o novo, baixa o fonte e roda o setup.rb ou então compila tudo.

    2. Amigo estou tendo um pequeno problema, fiz todos os passo passados por você mas quando executo sudo gem install rails ele aparece esse erro:

      ERROR: Loading command: install (LoadError)
      no such file to load — zlib
      ERROR: While executing gem … (NameError)
      uninitialized constant Gem::Commands::InstallCommand

      tem alguma ideia do que possa ser?

      • Pelo erro, provavelmente faltam alguns doa pacotes necessários para rodar o gem direito, verifique se os pacotes a seguir estão realmente instalados:

      • zlib1g
      • zlib1g-dev
      • build-essential
      • openssl
      • libssl-dev
      • libmysqlclient16-dev
      • Deve funcionar, se não remova o gem e instale novamente, depois de instalar todos os outros pacotes.