Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ruby on Rails Enecomp 2008

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on. →

Ruby on Rails Enecomp 2008

Minicurso ministrado no Enecomp 2008

Avatar for Allisson Azevedo

Allisson Azevedo

November 02, 2011

More Decks by Allisson Azevedo

Other Decks in Technology

Transcript

  1. 2 Sobre o Instrutor  Allisson Azevedo - http://allisson.eti.br 

    Concluinte do curso de Licenciatura em Computação – UEPB  Àreas de Interesse: – Desenvolvimento Web – Redes (Arquitetura, Segurança) – Sistemas Operacionais (Linux, FreeBSD) – Cloud Computing
  2. 6 Ruby - Definição A dynamic, open source programming language

    with a focus on simplicity and productivity. It has an elegant syntax that is natural to read and easy to write.
  3. 7 Ruby - Histórico  Criado por Yukihiro “Matz” Matsumoto

     Objetivos – Ser um Perl melhorado – Mais OO do que Python  1993: Começo do desenvolvimento  1995: Versão 0.95 disponível  1996: Versão 1.0 disponível  1998: Site traduzido para inglês
  4. 8 Ruby – Histórico (Cont)  1999: – Matz publica

    o primeiro livro – Ruby Workshop  2000: InformIT publica entrevista com Matz  2001: – Programming Ruby (Pickaxe) – Rubyconf.new  2003: Versão 1.8.0 lançada
  5. 9 Ruby – Histórico (Cont)  2004: O Framework Rails

    é lançado – Killer App de Ruby – Grande interesse por Ruby – Muitos livros publicados  2007: Versão 1.8.6 lançada  2008: Versão 1.8.7 lançada
  6. 11 Ruby - Características  Opensource (GPLv2)  Feita para

    humanos – Fácil de ler e escrever – Poderosa – Divertida  Interpretador multiplataforma – Windows, DOS – Linux, *BSD, MacOSX – BeOS – OS/2
  7. 12 Ruby – Características (Cont)  Orientada a objeto –

    Tudo é um objeto!  Tipagem Dinâmica  Tipagem Forte  Garbage collector – Mark-and-sweep  Tratamento de exceções  Blocks (closures)  Módulos (mix-in)
  8. 13 Ruby – IRB  Interactive Ruby  Console interativo

    para testar códigos simples em Ruby  Muito utilizado nesses slides
  9. 20 Ruby – Strings  Strings são definidas usando aspas

    simples ou duplas  As aspas duplas permitem que você utilize o conteúdo de uma variável na string
  10. 22 Ruby – Number  Existem três tipos principais para

    representar números  Float – Ponto flutuante  Fixnum – Inteiros pequenos  Bignum – Inteiros grandes
  11. 24 Ruby – Arrays  Contém uma coleção de objetos

     Os objetos podem ser de tipos diferentes  Os objetos são acessados pelo seu index
  12. 26 Ruby – Symbol  Pode ser utilizado no lugar

    de strings e vice-versa  Razões para usar symbol no lugar de string: – Se ocorrer a repetição da mesma string 1000 vezes, vai ser ocupado 1000 vezes o espaço de memória dessa string  Para declarar um symbol, usamos “:” antes do nome – :simbolo1, :simbolo2
  13. 27 Ruby – Symbol (Cont)  Usos de symbol em

    Ruby: – Hash keys  hash = {:nome => 'Allisson} – Argumento para métodos  meu_metodo(:valor1,:valor2)
  14. 29 Ruby – Hashes  São arrays que possuem a

    estrutura de chave/valor  Não permite duplicação de chaves  Geralmente utiliza symbols como chaves
  15. 32 Ruby – Classes  Todo objeto em Ruby possui

    sua própria classe  Para descobrir a classe do objeto utilize a construção objeto.class
  16. 36 Ruby – Herança  Uma classe filha pode herdar

    toda a estrutura e variáveis de uma classe mãe  Ruby possui herança única (de propósito)
  17. 39 Ruby – Variáveis  Locais – Existem nos limites

    do método – variavel_local = 10  Globais – Acessível em qualquer parte do programa – $variavel_global = 10
  18. 40 Ruby – Variáveis (Cont)  Instância – Implementam os

    atributos de uma classe, acessível dentro da classe – @variavel_instancia = 10  Classe – São compartilhadas entre todos os objetos dessa classe – @@variavel_classe = 10
  19. 43 Ruby – Blocks  São funções anônimas que podem

    ser passadas como parâmetros para um método  Delimitados por “{}” ou “do end” – “{}” para blocos de uma linha – “do end” para blocos com mais de uma linha  Para criar métodos que recebam blocos, use a instrução yield no corpo do método
  20. 47 Ruby – Modules  Módulos seguem o mesmo padrão

    de classes, exceto: – Não possui instâncias – Não possui subclasses  Um módulo serve como uma localização central para que sejam agregados métodos e constantes
  21. 48 Ruby – Modules (Cont)  Módulos em Ruby são

    utilizados para dois propósitos básicos: – Permitir que seja definido um método que não entre em conflito com outro já definido com mesmo nome – Compartilhar funcionalidades entre classes (pseudo herança múltipla)
  22. 54 Ruby – RubyGems  É um sistema de gerenciamento

    de bibliotecas em Ruby  A bibliotecas são disponibilizadas no formato .gem  Resolução de dependências  Várias versões da mesma gem no sistema  Maneira recomendada de instalar bibliotecas (inclusive o Rails) – gem install rails
  23. 56 Histórico Desenvolvimento Web  Começo: Páginas estáticas  1993:

    Common Gateway Interface  1995: PHP  1996: ASP  1997: Java Servlet 1.0  2002: .Net  2004: Ruby on Rails
  24. 57 37 Signals  Jason Fried  David Heinemeier Hansson

     Basecamp  Getting the real – Less is more
  25. 58 Ruby on Rails  Framework para desenvolvimento web –

    Full stack  Full stack vs Glue  Criado por David Heinemeier Hansson (2004)  Extraído do aplicativo Basecamp  MVC (Model-View-Controller)  Código aberto, sem restrições
  26. 59 Ruby on Rails - Releases  2005: 1.0.0 

    2006: 1.1.0  2007: – 1.2.0 – 2.0.0  2008: 2.1.0
  27. 60 Rails - Conceitos  MVC – Model  Regras

    de negócio (persistência de dados) – View  Interação com usuário (templates renderizados para html) – Controller  Controle da lógica e fluxo de dados
  28. 61 Rails – Conceitos (Cont)  DRY (Don't repeat yourself)

    – Desconfie se estiver utilizando o copiar e colar em excesso  Testing – Suíte de testes integrada – Ideal 100% de cobertura de testes  Abstração utilizando código Ruby – SQL – Javascript
  29. 62 Rails – Conceitos (Cont)  Convention over configuration –

    Utilize as convenções e esqueça configuração – Menos código – Menos erros – Mais fácil de manter
  30. 64 Rails – Pacotes  O Rails é composto de

    um série de pacotes (frameworks)  Cada pacote resulta em um .gem separado  Pacotes – ActionMailer, ActionPack, ActiveRecord, ActiveSupport e ActiveResource
  31. 66 Rails – ActionPack  É composto de duas partes:

     ActionController – Responsável pela lógica/fluxo de dados  ActionView – Responsável pela interação com usuário (html, css, ajax)
  32. 67 Rails – ActiveRecord  É o ORM (object-relation mapping)

    do Rails  Conecta as regras de negócios com banco de dados – Persistência de dados – Create – Read – Update – Delete/Destroy
  33. 68 Rails – ActiveRecord (Cont)  Migrations – Permite que

    mudanças em tabelas de banco de dados sejam geridas por código Ruby  Facilidade  Independência
  34. 69 Rails – ActiveSupport  Coleção de várias bibliotecas que

    servem de apoio para o Rails – Operações com datas – Timezone – Json – Etc
  35. 70 Rails – ActiveResource  Consome webservices no padrão REST

    – Atua como um ORM para webservices REST
  36. 71 Rails – Plugins  Permitem adicionar novas funcionalidades a

    um projeto Rails  Muitos plugins disponíveis (>800) – acts_as_taggable_on_steroids – will_paginate – restful_authentication – attachment_fu – brazilian_rails
  37. 72 Rails – Rake  Programa responsável por executar tarefas

    pré-definidas – Criar e modificar tabelas com migrations – Rodar suíte de testes – Etc
  38. 75 Instalação - Windows  One-Click Installer – http://rubyforge.org/projects/rubyinstaller/ –

    Ruby, RubyGems, etc  Instant Rails – http://instantrails.rubyforge.org/ – Ruby, Rails, RubyGems, Apache, MySQL, etc
  39. 76 Instalação - Linux  Fedora: – yum install ruby

    ruby-devel ruby-irb ruby- rdoc ruby-ri rubygems  Ubuntu: – sudo apt-get install ruby rdoc irb libyaml- ruby libzlib-ruby ri libopenssl-ruby ruby1.8-dev build-essential rubygems
  40. 77 Instalação – Rails  É recomendável usar o RubyGems

    para instalar o rails – gem install rails -y
  41. 78 Instalação – Adaptadores BD  Depois é preciso instalar

    a biblioteca para interação com seu banco de dados  Sqlite3: gem install sqlite3-ruby – Instalar o pacote de desenvolvimento do sqlite antes  MySQL: gem install mysql – Instalar o pacote de desenvolvimento do mysql antes
  42. 79 Instalação – Mongrel  Servidor http que roda sobre

    o Rails  Muito superior ao servidor http padrão (webrick)  gem install mongrel
  43. 80 Editor de código  Netbeans 6  Aptana RadRails

     Qualquer editor simples com syntax highlight: – Gedit – Vim – Notepad++
  44. 81 Iniciando um projeto  Sempre do mesmo jeito –

    rails projeto (Sqlite) – rails projeto -d mysql
  45. 84 O que é deployment?  É o trabalho necessário

    para publicar o código fonte do seu website em ambiente de produção – Botar no ar!
  46. 85 Deployment - Arquitetura  É preciso pensar em uma

    arquitetura de deployment que permita que o aplicativo “escale” – Escalabilidade vs Performance – Polêmica do Twitter  Rails escala?
  47. 87 Deployment - 2005  Proxy reverso – Apache 

    WebApp – Rails + LightTPD  FastCGI  Database – MySQL
  48. 89 Deployment - Atualmente  Proxy reverso – Nginx, Apache

     WebApp – Rails + Mongrel  HTTP  Database – MySQL + MEMCACHED
  49. 91 Deployment - Capistrano  Automatiza tarefas via SSH em

    servidores remotos – Instalação de software – Deployment de aplicações – Gerenciamento de configuração  Feito em Ruby  Programável em Ruby
  50. 93 Deployment - Monit  Utilitário para monitorar processos, arquivos,

    diretórios e filesystem de sistemas UNIX  Monitorar o mongrel – Evitar consumo excessivo de memória  Se passar de certo consumo, reinicie o processo
  51. 94 Deployment – Fusion Passenger  mod_rails  A grande

    novidade em deployment no mundo Rails  Funcionamento semelhante ao mod_php – Popularização em shared hostings  Substituto do FastCGI – Apenas upload dos arquivos para funcionar
  52. 96 JRuby  Implementação de Ruby em Java  Versão

    atual: 1.1.3  Rails funcionando na JVM
  53. 97 IronRuby  Implementação do Ruby em .Net  Ainda

    em beta  Passou em cerca de 71% dos testes para rodar Rails
  54. 98 Rubinius  É uma nova VM para Ruby 

    Compatível com MRI (Matz Ruby Interpreter)  Ainda em beta