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

Ruby on Rails Enecomp 2008

Ruby on Rails Enecomp 2008

Minicurso ministrado no Enecomp 2008

Allisson Azevedo

November 02, 2011
Tweet

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