2. Curso – Ruby on Rails Tópicos Introdução ao Ruby Estruturas da Linguagem Introdução ao Rails Estruturas do Framework Exercício Prático Instalação CRUD Associações Banco de Dados
4. Curso – Ruby on Rails Linguagem de programação criada em 1993 por YukihiroMatz Open Source Tipagem dinâmica Linguagem de alto nível http://www.ruby-lang.org/
5. Curso – Ruby on Rails Totalmente Orientada a objetos Tudo é objeto O número 5 é um objeto da classe Fixnum Não existem tipos básicos (int, char) Linguagem de script dinâmica e interpretada Perde um pouco em performance
6. Curso – Ruby on Rails Não é necessário declarar variáveis Variáveis não “tipadas” Sintaxe simples GarbageCollector (Gestão de memória automática) IRB – Interactive Ruby Shell
12. Curso – Ruby on Rails Framework MVC ( Model-View-Controller) para desenvolvimento Web Desenvolvido em Linguagem Ruby http://guias.rubyonrails.pro.br/ http://rubyonrails.org/
13. Curso – Ruby on Rails Criado em 2004 por David Heinemeir Conceitos DRY (Don’t Repeat Yourself) Convention over Configuration Exemplo: Blog http://media.rubyonrails.org/video/rails_take2_with_sound.mov Histórico
14. Curso – Ruby on Rails O rails é um framework composto por 5 outros frameworks: Active Record (Model) Active Pack (ActionController e ActionView) ActionMailer ActiveSupport ActiveResource
15. Curso – Ruby on Rails O rails é uma RubyGem Gem é um código ruby empacotado ( similar a um plugin)
17. Curso – Ruby on Rails Qual a idéia: Desenvolver uma aplicação parecida com um blog: Conexão com o Banco de Dados (Mysql) CRUD’s de Usuários, Posts e Amizades Interface amigável Associações entre Entidades O Foco
19. Curso – Ruby on Rails Instalação Rails No terminal: gem install rails –v 2.3.5 MySQL http://dev.mysql.com/downloads/ ou Xampp, Lampp, Wampp.... MySQL-Ruby Driver
20. Curso – Ruby on Rails Para não complicar muito o curso não iremos utilizar nenhuma IDE, somente o prompt de comando ( terminal ) e um editor de texto. IDE’s para Rails: AptanaRadRails, RubyMine, TextMate(Mac) IDE
21. Curso – Ruby on Rails Abra o terminal -d mysql Indica qual o SGDB iremos utilizar Criando o Projeto
22. Curso – Ruby on Rails Abra o arquivo “database.yml” que está na pasta blog/config Edite as configurações do seu SGBD:
23. Curso – Ruby on Rails Agora vamos mandar o rails criar o banco de dados Rake é uma ferramenta de construção (build), similar a um make.
24. Curso – Ruby on Rails Vamos criar agora o modelo para nossa entidade Post. Model: Post
25. Curso – Ruby on Rails Model: Post post.rb20110415025628_create_posts.rb
26. Curso – Ruby on Rails Controller: Post Agora vamos criar o Controller e alguns Actions ( métodos )
28. Curso – Ruby on Rails View: Post Vamos criar os arquivos da view para Posts. Inicialmente vamos criar um Partial, que nada mais é do que um pedaço de código que inserimos em outro arquivo. Dessa forma podemos chamar aquele código diversas vezes sem repeti-lo ( Don’tRepeatYourself)
29. Curso – Ruby on Rails View: Post Crie um arquivo chamado “_post.html.erb” na pasta views/posts com o código: Agora criamos a view “index.html.erb” na pasta view/posts com o código:
30. Curso – Ruby on Rails View: Post Vamos agora criar alguns posts no Console: No terminal, na pasta raiz do projeto, digite:
31. Curso – Ruby on Rails Formulario para Posts Obviamente o usuário da aplicação não irá utilizar o console para criar novos posts. Portanto temos que criar uma funcionalidade para que o usuário faça novos posts Vamos fazer como no twitter, e colocar uma caixa de texto em cima dos posts
32. Curso – Ruby on Rails Formulario para Posts Então vamos criar um partial para este form de um novo post. Crie o arquivo “_novo_post.html.erb” na pasta views/posts com o código:
33. Curso – Ruby on Rails Formulario para Posts Agora temos que modificar o index.html.erb de Posts para mostrar esse partial no topo da página
34. Curso – Ruby on Rails Routes Para isso tudo funcionar temos que fazer algumas alterações no arquivo routes.rb Esse é o arquivo que controle todas as rotas dentro da nossa aplicação rails. É o que controla o fluxo de uma página para outra, ou seja, controla como a url será interpretada pelo rails.
35. Curso – Ruby on Rails Routes Abra o arquivo routes.rb que está na pasta blog/config Adicione a linha “map.resources :posts” Este comando cria rotas nomeadas para posts Exemplo: no controller usamos “posts_path”, este comando só é habilitado por causa da linha abaixo
36. Curso – Ruby on Rails Iniciar Servidor Vá a pasta raiz do projeto e execute o comando:
37. Curso – Ruby on Rails Browser Abra o browser e digite: http://localhost:3000/posts
39. Curso – Ruby on Rails Ajax O Ajax nos permite fazer requisições assíncronas ao servidor utilizando JavaScript. Vamos então utilizar ajax para enviar um post de forma dinâmica Quando clicarmos no botão “enviar” queremos adicionar o novo post sem recarregar a página.
40. Curso – Ruby on Rails Ajax Para isso devemos editar o actioncreate do controller de posts (posts_controller.rb na pasta app/controllers) Vamos adicionar a linha “format.js” Isso fará com que a actioncreate possa responder através de um arquivo javascript.
42. Curso – Ruby on Rails Ajax Agora vamos criar um arquivo de layout Crie um arquivo “posts.html.erb” na pasta views/layout com o seguinte código:
43. Curso – Ruby on Rails Ajax A idéia principal de criar esse layout, além de adicionar o código html corretamente ( html, body...) é chamar as bibliotecas javascript referentes ao Ajax. Agora precisamos fazer uma alteração no arquivo “index.html.erb” localizado na pasta views/posts Adicionamos simplesmente uma div por fora da renderização do partial. Isso será util mais tarde para informamos ao Ajax, onde ele irá inserir o novo post.
44. Curso – Ruby on Rails Ajax Agora vamos adicionar um bloco “div_for” no partial “_post.html.erb” (views/posts). Isso só fará com que ele crie uma nova div para cada vez que aquele código for chamado.
45. Curso – Ruby on Rails Ajax Vamos editar agora o partial “_novo_post.html.erb” e modificar a tag para “form_remote_tag” Isso irá indicar para o rails que esse formulário deverá fazer uma requisição via ajax e não uma requisição normal.
46. Curso – Ruby on Rails Ajax (Quase lá) Agora, por fim, vamos criar um templaterjs. É esse arquivo que a action “create” irá renderizar. Crie um arquivo “create.js.rjs” na pasta views/posts com o seguinte código: A primeira linha é um comando para inserir no “topo” da div “posts” o conteúdo do partial “_post.html.erb(@posts)” A segunda linha é um comando para dar um efeito visual após a inserção do código html
49. Curso – Ruby on Rails CSS Vamos agora deixar a nossa aplicação um pouco mais apresentável. Crie um arquivo chamado layout.css na pasta public/stylesheets com o seguinte código:
50. Curso – Ruby on Rails CSS Agora temos que fazer a chamada a esse arquivo de CSS no nosso arquivo de layout “posts.html.erb” que está na pasta views/layout
52. Curso – Ruby on Rails Root Vamos agora, deixar essa página que acabamos de criar como página inicial da aplicação. Para isso devemos deletar o arquivo index.html que está na pasta public e alterar o arquivo routes.rb
54. Curso – Ruby on Rails Autenticação de Usuário Vamos agora criar um sistema de autenticação com login e cadastro de usuários. Existem algumas gems prontas para essa funcionalidade. Dentre elas, existe uma bem simples, Nifty-Generators, criada por Ryan Bates. Para instala-la iremos usar o comando no terminal:
55. Curso – Ruby on Rails Autenticação de Usuário Agora que temos a gem instalada, vamos executar os comandos para gerar os arquivos de autenticação:
56. Curso – Ruby on Rails Autenticação de Usuário O primeiro comando gera os arquivos essenciais para de usuario e sessão. O segundo cria além de outras coisas, um arquivo de layout que é necessário para renderizar as views da autenticação. Agora vamos fazer um migration para atualizar o banco de dados
57. Curso – Ruby on Rails Autenticação de Usuário Agora vamos criar algumas funcionalidades para a autenticação. Vamos criar um partial onde o usuario pode logar e se cadastrar Crie um arquivo chamado “_login.html.erb” na views/posts com o código:
58. Curso – Ruby on Rails Autenticação de Usuário Agora vamos adicionar esse partial no layout de posts (“posts.html.erb”). Dessa forma esses links sempre aparecerão no topo da página.
59. Curso – Ruby on Rails Autenticação de Usuário Outra funcionalidade que queremos é que um usuário só possa postar mensagens se ele estiver logado. Então podemos fazer isso alterando o “_novo_post.hrml.erb”:
60. Curso – Ruby on Rails Autenticação de Usuário Temos acesso a esses métodos (funções) pois a gem criou o “authentication.rb” na pasta blog/lib
61. Curso – Ruby on Rails Autenticação de Usuário Ao gerarmos a autenticação com a gem ele criou as telas de cadastro de usuário e de login “new.html.erb” (views/users) e “new.html.erb” (views/sessions) Por padrão as telas vem com mensagens em inglês, então podemos altera-las:
68. Curso – Ruby on Rails Amizade Agora vamos passar para a última parte da aplicação. Temos que fazer uma relação de amizade entre os usuários Para isso temos que criar um auto-relacionamento entre o modelo de usuários. Ou seja, um usuário tem uma relação de amizade com um outro elemento da própria tabela de usuários, por isso nomeamos auto-relacionamento. Como temos essa relação de amizade, iremos criar um novo model chamado amizade com as duas chaves estrangeiras (user_id, amigo_id)
69. Curso – Ruby on Rails Amizade Também precisaremos de um controller para criar e excluir amizades
70. Curso – Ruby on Rails Amizade Agora adicionamos o seguinte código no controller:
71. Curso – Ruby on Rails Amizade Agora temos que definir esse auto-relacionamento. Para isso temos que adicionar as seguintes linhas nos nossos models
72. Curso – Ruby on Rails Amizade Agora vamos fazer uma tela para listar todas as amizades de um usuário e possibilita-lo de excluir ou adicionar novas amizades. Para isso vamos criar uma view “index.html.erb” na pasta views/users
73. Curso – Ruby on Rails Amizade E também um “show.html.erb” na pasta de users
74. Curso – Ruby on Rails Amizade Agora vamos adicionar as seguintes actions no controller de usuários:
75. Curso – Ruby on Rails Amizade Vamos agora adicionar a nova entidade no routes.rb E também vamos adicionar dois links no “index.html.erb” de posts
76. Curso – Ruby on Rails Amizade Vamos agora fazer algumas correções. Para não mostrar nenhum post e nem a opção de procurar amigos para quem não está logado, devemos colocar a seguinte condição no “index.html.erb” de posts
77. Curso – Ruby on Rails Amizade Vamos adicionar a seguinte linha no “_post.html.erb” para informar quem foi o autor do post
78. Curso – Ruby on Rails Amizade Agora temos mais uma ultima alteração a fazer. Devemos somente mostrar os posts feitos pelo próprio usuário ou por seus amigos, afinal um usuário não deseja ver um post de uma pessoa na qual ele não conhece. Então para fazer isso, devemos alterar o controller de posts e modificar o retorno que estamos mandando para a view Vamos então fazer a seguinte modificação no controller