Apostila Ruby on rails

  • View
    5.556

  • Download
    4

Embed Size (px)

DESCRIPTION

Apostila de desenvolvimento ágil para Web 2.0 com Ruby on Rails disponível para download. Mais apostilas: www.portalgsti.com.br

Text of Apostila Ruby on rails

  • RR-71Desenvolvimento gil para Web

    2.0 com Ruby on Rails

  • Conhea mais da Caelum.

    Cursos Onlinewww.caelum.com.br/online

    Blog Caelumblog.caelum.com.br

    Newsletterwww.caelum.com.br/newsletter

    Facebookwww.facebook.com/caelumbr

    Twittertwitter.com/caelum

    Casa do CdigoLivros para o programador

    www.casadocodigo.com.br

  • Conhea alguns de nossos cursos

    FJ-11: Java e Orientao a objetos

    FJ-26: Laboratrio Web com JSF2 e CDI

    FJ-16: Laboratrio Java com Testes, XML e Design Patterns

    FJ-19: Preparatrio para Certificao de Programador Java

    FJ-21: Java para Desenvolvimento Web

    FJ-31: Java EE avanado e Web Services

    FJ-91: Arquitetura e Design de Projetos Java

    RR-71:Desenvolvimento gil para Web 2.0 com Ruby on Rails

    RR-75:Ruby e Rails avanados: lidando com problemas do dia a dia

    Mais de 8000 alunos treinados; Reconhecida nacionalmente; Contedos atualizados para o mercado e para sua carreira; Aulas com metodologia e didtica cuidadosamente preparadas; Ativa participao nas comunidades Java, Rails e Scrum; Salas de aula bem equipadas; Instrutores qualificados e experientes; Apostilas disponveis no site.

    Para mais informaes e outros cursos, visite: caelum.com.br/cursos

    FJ-25: Persistncia com JPA2 e Hibernate

  • Sobre esta apostilaEsta apostila daCaelumvisa ensinar de umamaneira elegante, mostrando apenas o que necessrio e quando

    necessrio, no momento certo, poupando o leitor de assuntos que no costumam ser de seu interesse em

    determinadas fases do aprendizado.

    A Caelum espera que voc aproveite esse material. Todos os comentrios, crticas e sugestes sero muito

    bem-vindos.

    Essa apostila constantemente atualizada e disponibilizada no site da Caelum. Sempre consulte o site para

    novas verses e, ao invs de anexar o PDF para enviar a um amigo, indique o site para que ele possa sempre

    baixar as ltimas verses. Voc pode conferir o cdigo de verso da apostila logo no nal do ndice.

    Baixe sempre a verso mais nova em: www.caelum.com.br/apostilas

    Esse material parte integrante do treinamento Desenvolvimento gil para Web 2.0 com Ruby on Rails e

    distribudo gratuitamente exclusivamente pelo site da Caelum. Todos os direitos so reservados Caelum.

    A distribuio, cpia, revenda e utilizao para ministrar treinamentos so absolutamente vedadas. Para uso

    comercial deste material, por favor, consulte a Caelum previamente.

    www.caelum.com.br

    1

  • Sumrio

    1 Agilidade naWeb 11.1 A agilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

    1.2 A comunidade Rails . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

    1.3 Bibliograa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

    1.4 Tirando dvidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

    1.5 Para onde ir depois? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

    2 A linguagem Ruby 42.1 A histria do Ruby e suas caractersticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    2.2 Instalao do interpretador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    2.3 RubyGems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    2.4 Bundler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    2.5 Outras implementaes de interpretadores Ruby . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    3 Ruby bsico 103.1 Aprender Ruby? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    3.2 Executando cdigo Ruby no Terminal: IRB e arquivos .rb . . . . . . . . . . . . . . . . . . . . . 10

    3.3 Variveis, Strings e Comentrios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

    3.4 Variveis e atribuies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

    3.5 Tipagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

    3.6 Exerccios - Variveis e Atribuies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

    3.7 String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

    3.8 Exerccios - Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

    3.9 Tipos e operaes bsicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    3.10 Exerccios - Tipos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    3.11 Estruturas de controle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

    3.12 Exerccios - Estruturas de controle e Regexp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    3.13 Desaos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

    4 Mais Ruby: classes, objetos e mtodos 234.1 Mundo orientado a objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    4.2 Mtodos comuns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

    4.3 Denio de mtodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

    4.4 Exerccios - Mtodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

    4.5 Discusso: Enviando mensagens aos objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

    4.6 Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

    4.7 Exerccios - Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

    4.8 Desao: Classes abertas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

    4.9 self . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

    i

  • 4.10 Desao: self e o mtodo puts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

    4.11 Atributos e propriedades: acessores e modicadores . . . . . . . . . . . . . . . . . . . . . . . . . 29

    4.12 Syntax Sugar: facilitando a sintaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

    4.13 Exerccios - Atributos e propriedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    4.14 Colees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

    4.15 Exemplo: mltiplos parmetros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

    4.16 Hashes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

    4.17 Exerccios - Arrays e Hashes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

    4.18 Blocos e Programao Funcional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

    4.19 Exerccios - Blocos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

    4.20 Para saber mais: Mais sobre blocos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

    4.21 Desao: Usando blocos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

    4.22 Manipulando erros e exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

    4.23 Exerccio: Manipulando exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

    4.24 Arquivos com cdigo fonte ruby . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

    4.25 Para saber mais: um pouco de IO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

    5 Metaprogramao e Padres de Projeto 505.1 Mtodos de Classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

    5.2 Para saber mais: Singleton Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

    5.3 Exerccios - Ruby Object Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

    5.4 Design Patterns: Singleton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

    5.5 Exerccio: Design Pattern - Singleton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

    5.6 Convenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

    5.7 Polimorsmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

    5.8 Exerccios - Duck Typing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

    5.9 Design Patterns: Template Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

    5.10 Exerccio Opcional: Design Pattern - Template Method . . . . . . . . . . . . . . . . . . . . . . . 60

    5.11 Modulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

    5.12 Design Patterns: Observer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

    5.13 Desao: Design Pattern - Observer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64