Tutorial Rails

Embed Size (px)

Text of Tutorial Rails

Tutorial de RailsDesenvolvido por Eustquio TaQ RangelDedicado para a minha filhinha Ana Isabella e para a minha esposa Ana Carolina que falou que me mata se eu no dedicar alguma coisa para ela depois de dedicar o livro de Ruby s para a Ana Isabella. ;-)

"Rails", "Ruby on Rails", e o logotipo do Rails so marcas registradas de David Heinemeier Hansson. Todos os direitos reservados. Obrigado ao David por autorizar o uso do logotipo do Rails. :-) Reviso 2 20/05/2006 Este trabalho est licenciado sob uma Licena Creative Commons Atribuio-Uso NoComercial-Compatilhamento pela mesma licena. Para ver uma cpia desta licena, visite http://creativecommons.org/licenses/by-nc-sa/2.5/br/ ou envie uma carta para Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

SumrioSobre esse tutorial............................................................................................... ........................3 O que o Rails?............................................................................................... ............................4 O que Ruby?........................................................................................................................ ......4 Instalando o Rails......................................................................................................... ................6 Configurando o banco de dados......................................................................... ..........................6 Criando o projeto......................................................................................................................... .7 Scaffold....................................................................................................... ............................8 Modelos................................................................................................................. ..................9 Visualizadores................................................................................................................... .....11 Controladores.................................................................................................. ......................14 Validao.................................................................................................................... ...........17 Relacionamentos......................................................................................... ..........................20 Personalizando o cdigo gerado................................................................................... ..........24 Arquivos binrios........................................................................................... ........................28 Tarefas administrativas...................................................................................................... ....36 Criando a livraria externa.............................................................................................. ..........43 Melhorando nossas listagens................................................................................................. .48 Pesquisando........................................................................................... ...............................55 Renderizaes parciais............................................................................ ..............................56 Renderizando parcialmente com Ajax........................................................... .........................61 Finalizando....................................................................................................................... ..........65

Sobre esse tutorialAlm de tudo que escrevi ali em cima, gostaria de deixar claro algumas coisas antes de comearmos a meter a mo na massa: 1. O David realmente me deixou usar o logotipo. Guardei o email de prova ehehe. 2. Minha esposa disse que esse tipo de dedicatria no vale, mas tudo bem, ficou engraado. ;-) 3. Fiz esse tutorial de maneira bem descompromissada de acordo com vrias anotaes que eu havia feito. No esperem um esmero de cdigo, a inteno foi liberar algo rpido e prtico para dar uma noo do framework. Tem muita coisa que pode ser melhorada depois de entender os conceitos bsicos e sujar as mos no cdigo. 4. Por causa da razo acima podem ser encontrados vrios cdigos CSS meio estranhos, e pior, algumas partes que nem usam CSS. Eu continuo usando tabelas em alguns pontos, mas isso pode ser melhorado tambm. 5. Tambm no me preocupei muito com os layouts. Tem umas coisas bem feinhas por a. 6. Deve ter um ou outro erro (espero que poucos!) perdidos por a. Se algum encontrar por favor me avise (eustaquiorangel at yahoo.com) por favor! 7. Se algum quiser armazenar o tutorial para download no seu servidor, por favor me informe o link para que eu possa mencionar no meu site. 8. Podem usar o tutorial para ler, imprimir, mandar para o amigo, etc, etc, etc, s no podem usar para uso comercial, seus espertinhos. ;-) 9. Sugestes sero bem-vindas e podem ser enviadas para o meu email ( eustaquiorangel at yahoo.com). 10. Espero que se divirtam. :-)

O que o Rails?Rails um framework1 feito em Ruby que funciona no conceito MVC Model, View, Controller onde separado o modelo de dados, a interface do usurio e o controle lgico do programa, permitindo que alteraes em qualquer uma dessas partes tenham pouco impacto nas outras.

O que Ruby?Para explicar o que Ruby, eu fao uma cpia descarada do mesmo texto que est no meu livro, uma traduo livre do que Yukihiro Matz Matsumoto, seu criador, diz a respeito dela em http://www.ruby-lang.org/en/20020101.html: Ruby uma linguagem de script interpretada para programao orientada a objetos de um modo fcil e rpido. Ela tem vrios recursos para processar arquivos de texto e para fazer tarefas de gerenciamento de sistema (assim como o Perl). Ela simples, direto ao ponto, extensvel e portvel. Oh, preciso mencionar, totalmente livre, o que significa no s livre de precisar pagar para us-la, mas tambm a liberdade de usar, copiar, modificar e distribu-la. Recursos da linguagem Ruby tem uma sintaxe simples, parcialmente inspirada por Eiffel e Ada. Ruby tem recursos de tratamento de excees, assim como Java e Python, para deixar

mais fcil o tratamento de erros. Os operadores do Ruby so acar sinttico para os mtodos. Voc pode redefini-los

facilmente. Ruby uma linguagem completa e pura orientada objetos. Isso significa que todo dado

em Ruby um objeto, no do jeito de Python e Perl, mas mais do jeito do SmallTalk: sem excees. Por exemplo, em Ruby, o nmero 1 uma instncia da classe Fixnum. A orientao objetos do Ruby desenhada cuidadosamente para ser completa e aberta

melhorias. Por exemplo, Ruby tem a habilidade de adicionar mtodos em uma classe, ou at mesmo em uma instncia durante o runtime! Ento, se necessrio, a instncia de uma classe pode se comportar diferente de outras instncias da mesma classe. Ruby tem herana nica, de propsito. Mas entende o conceito de mdulos (chamados de

Categories no Objective-C). Mdulos so colees de mtodos. Toda classe pode importar um mdulo e pegar seus mtodos. Alguns de ns acham que isso um jeito mais limpo do que herana mltipla, que complexa e no usada tanto comparado com herana nica (no conte C++ aqui, pois l no se tem muita escolha devido a checagem forte de tipo!). Ruby tem closures2 verdadeiras. No apenas funes sem nome, mas com bindings de

variveis verdadeiras. Ruby tem blocos em sua sintaxe (cdigo delimitado por {...} ou do...end). Esses blocos

podem ser passados para os mtodos, ou convertidos em closures. 1 Um framework pode ser definido como uma software estrutura de auxlio ao desenvolvimento de outros softwares, visando prover agilidade e eficincia para que o programador se livre da implementao de cdigo repetitivo e ... chato. 2 Closures podem ser definidas como funes criadas dentro de outras funes, e que referenciam o ambiente (variveis) da funo externa mesmo depois dela ter sado de escopo, retendo a sua referncia.

Ruby tem um garbage collector que realmente do tipo marca-e-limpa. Ele atua em

todos os objetos do Ruby. Voc no precisa se preocupar em manter contagem de referncias em libraries externas. melhor para a sua sade. Escrever extenses em C para Ruby mais fcil que em Perl ou Python, em grande parte

por causa do garbage collector, e em parte pela boa API de extenses. A interface SWIG tambm est disponvel. Inteiros em Ruby podem (e devem) ser usados sem contar sua representao interna.

Existem inteiros pequenos (instncias da classe Fixnum) e grandes (Bignum), mas voc no precisa se preocupar em qual est sendo utilizado atualmente. Se um valor pequeno o bastante, um inteiro um Fixnum, do contrrio um Bignum. A converso ocorre automaticamente. Ruby no precisa de declarao de variveis. Apenas usa a conveno de nomenclatura

para delimitar o escopo das variveis. Por exemplo: var = varivel local, @var = varivel de instncia, $var= varivel global. E no precisa do uso cansativo do self em cada membro da instncia. Ruby pode carregar bibliotecas de extenso dinamicamente, se o sistema operacional

permitir. Ruby tem um sistema de threading independente do sistema operacional. Ento, para

cada plataforma que voc roda o Ruby, voc tem multithreading de qualquer jeito, at no MS-DOS! ;-) Ruby altamente portvel: ela desenvolvida em sua maioria no Linux, mas funciona em

muitos tipos de UNIX, DOS, Windows 95/98/Me/NT/2000/XP, MacOS, BeOS, OS/2, etc. Voc pode encontrar Ruby no seu site oficial na internet: http://www.ruby-lang.org L voc encontra o cdigo-fonte e verses instalveis para Windows . Compilar o cdigo rpido e fcil, no velho esquema tar xvzf ruby-.tgz ./configure make make install Procure na sua distribuio (se voc usa GNU/Linux) algum pacote do Ruby, e se voc usa Windows ou Mac, nos links correspondentes no site. Se voc quiser co