O documento apresenta um resumo de um curso sobre Ruby on Rails. O curso aborda tópicos como introdução à linguagem Ruby, estruturas do framework Rails, exercícios práticos de instalação, CRUD e associações com banco de dados.
Curso – Rubyon RailsTópicosIntrodução ao RubyEstruturas da LinguagemIntrodução ao RailsEstruturas do FrameworkExercício PráticoInstalaçãoCRUDAssociaçõesBanco de Dados
Curso – Rubyon RailsLinguagem de programação criada em 1993 por YukihiroMatzOpen SourceTipagem dinâmicaLinguagem de alto nívelhttp://www.ruby-lang.org/
5.
Curso – Rubyon RailsTotalmente Orientada a objetosTudo é objetoO número 5 é um objeto da classe FixnumNão existem tipos básicos (int, char)Linguagem de script dinâmica e interpretadaPerde um pouco em performance
6.
Curso – Rubyon RailsNão é necessário declarar variáveisVariáveis não “tipadas”Sintaxe simplesGarbageCollector (Gestão de memória automática)IRB – Interactive Ruby Shell
Curso – Rubyon RailsFramework MVC ( Model-View-Controller) para desenvolvimento WebDesenvolvido em Linguagem Rubyhttp://guias.rubyonrails.pro.br/http://rubyonrails.org/
13.
Curso – Rubyon RailsCriado em 2004 por David HeinemeirConceitosDRY (Don’t Repeat Yourself)Convention over ConfigurationExemplo: Bloghttp://media.rubyonrails.org/video/rails_take2_with_sound.movHistórico
14.
Curso – Rubyon RailsO rails é um framework composto por 5 outros frameworks:Active Record (Model)Active Pack (ActionController e ActionView)ActionMailerActiveSupportActiveResource
15.
Curso – Rubyon RailsO rails é uma RubyGemGem é um código ruby empacotado ( similar a um plugin)
Curso – Rubyon RailsQual 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 AmizadesInterface amigávelAssociações entre EntidadesO Foco
Curso – Rubyon RailsPara 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 – Rubyon RailsAbra o terminal-d mysql Indica qual o SGDB iremos utilizarCriando o Projeto
22.
Curso – Rubyon RailsAbra o arquivo “database.yml” que está na pasta blog/configEdite as configurações do seu SGBD:
23.
Curso – Rubyon RailsAgora vamos mandar o rails criar o banco de dadosRake é uma ferramenta de construção (build), similar a um make.
24.
Curso – Rubyon RailsVamos criar agora o modelo para nossa entidade Post.Model: Post
Curso – Rubyon RailsView: PostVamos 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 – Rubyon RailsView: PostCrie 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 – Rubyon RailsView: PostVamos agora criar alguns posts no Console:No terminal, na pasta raiz do projeto, digite:
31.
Curso – Rubyon RailsFormulario para PostsObviamente 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 postsVamos fazer como no twitter, e colocar uma caixa de texto em cima dos posts
32.
Curso – Rubyon RailsFormulario para PostsEntã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 – Rubyon RailsFormulario para PostsAgora temos que modificar o index.html.erb de Posts para mostrar esse partial no topo da página
34.
Curso – Rubyon RailsRoutesPara isso tudo funcionar temos que fazer algumas alterações no arquivo routes.rbEsse é 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 – Rubyon RailsRoutesAbra o arquivo routes.rb que está na pasta blog/configAdicione a linha “map.resources :posts”Este comando cria rotas nomeadas para postsExemplo: no controller usamos “posts_path”, este comando só é habilitado por causa da linha abaixo
36.
Curso – Rubyon RailsIniciar ServidorVá a pasta raiz do projeto e execute o comando:
37.
Curso – Rubyon RailsBrowserAbra o browser e digite: http://localhost:3000/posts
Curso – Rubyon RailsAjaxO Ajax nos permite fazer requisições assíncronas ao servidor utilizando JavaScript.Vamos então utilizar ajax para enviar um post de forma dinâmicaQuando clicarmos no botão “enviar” queremos adicionar o novo post sem recarregar a página.
40.
Curso – Rubyon RailsAjaxPara 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.
Curso – Rubyon RailsAjaxAgora vamos criar um arquivo de layoutCrie um arquivo “posts.html.erb” na pasta views/layout com o seguinte código:
43.
Curso – Rubyon RailsAjaxA 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/postsAdicionamos 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 – Rubyon RailsAjaxAgora 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 – Rubyon RailsAjaxVamos 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 – Rubyon RailsAjax (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
Curso – Rubyon RailsCSSVamos 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 – Rubyon RailsCSSAgora temos que fazer a chamada a esse arquivo de CSS no nosso arquivo de layout “posts.html.erb” que está na pasta views/layout
Curso – Rubyon RailsRootVamos 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
Curso – Rubyon RailsAutenticação de UsuárioVamos 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 – Rubyon RailsAutenticação de UsuárioAgora que temos a gem instalada, vamos executar os comandos para gerar os arquivos de autenticação:
56.
Curso – Rubyon RailsAutenticação de UsuárioO 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 – Rubyon RailsAutenticação de UsuárioAgora vamos criar algumas funcionalidades para a autenticação.Vamos criar um partial onde o usuario pode logar e se cadastrarCrie um arquivo chamado “_login.html.erb” na views/posts com o código:
58.
Curso – Rubyon RailsAutenticação de UsuárioAgora 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 – Rubyon RailsAutenticação de UsuárioOutra 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 – Rubyon RailsAutenticação de UsuárioTemos acesso a esses métodos (funções) pois a gem criou o “authentication.rb” na pasta blog/lib
61.
Curso – Rubyon RailsAutenticação de UsuárioAo 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:
Curso – Rubyon RailsAmizadeAgora vamos passar para a última parte da aplicação.Temos que fazer uma relação de amizade entre os usuáriosPara 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 – Rubyon RailsAmizadeTambém precisaremos de um controller para criar e excluir amizades
70.
Curso – Rubyon RailsAmizadeAgora adicionamos o seguinte código no controller:
71.
Curso – Rubyon RailsAmizadeAgora temos que definir esse auto-relacionamento.Para isso temos que adicionar as seguintes linhas nos nossos models
72.
Curso – Rubyon RailsAmizadeAgora 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 – Rubyon RailsAmizadeE também um “show.html.erb” na pasta de users
74.
Curso – Rubyon RailsAmizadeAgora vamos adicionar as seguintes actions no controller de usuários:
75.
Curso – Rubyon RailsAmizadeVamos agora adicionar a nova entidade no routes.rbE também vamos adicionar dois links no “index.html.erb” de posts
76.
Curso – Rubyon RailsAmizadeVamos 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 – Rubyon RailsAmizadeVamos adicionar a seguinte linha no “_post.html.erb” para informar quem foi o autor do post
78.
Curso – Rubyon RailsAmizadeAgora 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 viewVamos então fazer a seguinte modificação no controller