Rails na pratica

6,738 views
6,571 views

Published on

Uma visão geral de Ruby e Rails

Published in: Technology

Rails na pratica

  1. 1. Ruby on Rails na prática Túlio Ornelas
  2. 2. Agenda • Ruby • Rails • Instalando o Rails • Criando um projeto • Criando primeiro C.R.U.D • Validando C.R.U.D • Segundo C.R.U.D
  3. 3. Um pouco sobre Ruby • Criada em 1993 por Yukihiro Matz • Linguagem interpretada • Tipagem dinâmica • Fortemente tipada • Orientada a objetos • Livre • http://www.ruby-lang.org/
  4. 4. Um pouco sobre Ruby • Instalando  Linux: sudo apt-get install ruby  Windows: One-click-installer • http://www.ruby-lang.org/pt/downloads/  Mac OS/X: port install ruby • Testando a instalação  ruby -v  Irb -v
  5. 5. Um pouco sobre Ruby • Interpretando um arquivo • Interpretando diretamente um comando
  6. 6. Um pouco sobre Ruby • Em Ruby tudo é OO
  7. 7. Um pouco sobre Ruby • Criando uma classe  Em Ruby:  Em Java:
  8. 8. Um pouco sobre Ruby • Criando um objeto:  Ruby:  Java: Note a sintaxe simplificada! Não é necessário declarar, a variável é criada quando utilizada.
  9. 9. Um pouco sobre Ruby • Criando uma classe com método e construtor:  Ruby Java
  10. 10. Um pouco sobre Ruby • Variáveis:  Local:  De instância:  De classe: Variáveis de classe são comparadas a atributos estáticos (static) em java.
  11. 11. Um pouco sobre Ruby • Métodos  De instância:  Da classe:  Privados e Protegidos:
  12. 12. Um pouco sobre Ruby • Criando métodos de acesso as variáveis • attr_accessor e attr_reader são métodos que geram os métodos get/set dinamicamente
  13. 13. Um pouco sobre Ruby • Reestruturando nossa classe User
  14. 14. Um pouco sobre Ruby • Herança
  15. 15. Um pouco sobre Ruby • Testando a herança
  16. 16. Um pouco sobre Ruby • Booleans  As únicas coisas falsas em Ruby são nil e false
  17. 17. Um pouco sobre Ruby
  18. 18. Um pouco sobre Ruby • LAB  Dado um número imprimir todos os ímpares até ele
  19. 19. Um pouco sobre Ruby • Solução
  20. 20. Quer aprender mais? http://www.pragprog.com/
  21. 21. O que é o Rails? • Meta-Framework MVC • Desenvolvido em linguagem Ruby
  22. 22. Rails • Lançado em julho de 2004 • Solução completa, produtiva com baixa curva de aprendizagem • Conceitos:  DRY (Don’t Repeat yourself)  Convention of configuration
  23. 23. Rails - composição • O Rails é a junção de 5 frameworks, são eles:  Active Record (ORM)  Action Pack (MVC)  Action Mailer  Action Support  Action WebServices
  24. 24. Rails - instalando • O Rails é uma rubygem, por isso precisamos do gem corretamente instalado. • Uma “gem” é código ruby empacotado. Pode ser comparado ao .jar em Java. • Rubygems é instalado junto com o ruby, caso contrário: sudo apt-get install rubygems
  25. 25. Rails - instalando • Dependências:  libsqlite3-dev  ruby1.8-dev • Abra o console e digite: gem install sqlite3-ruby (driver) gem install rails *Confirme a instalação das dependências quando solicitado.
  26. 26. Rails - instalando • Verificando a instalação
  27. 27. Rails – criando o projeto • Para criar um projeto utilize o comando:  Rails <nome do projeto> • Por exemplo:  Rails bug_tracking • Dessa forma o rails Irá gerar o arcabouço de um projeto MVC
  28. 28. Rails – criando o projeto • Vamos criar o projeto bug_tracking
  29. 29. Rails – criando o projeto • Vamos subir o servidor com ruby script/server e entrar na URL http://localhost:3000
  30. 30. Rails – criando o projeto • Note que nosso projeto não tem nada. Vejamos as configurações do nosso ambiente:
  31. 31. Rails – o projeto • Analisaremos apenas o diretório app por enquanto • Controllers => Diretório com os controladores da aplicação • Models => Os modelos do seu domínio • Views => As telas • Helpers => Classes de ajuda (conversão, etc)
  32. 32. Rails • Scripts padrões do Rails, vejamos dois:  Generate => Cria uma estrutura básica para um modelo.  Server => Inicia o servidor da aplicação. • Modo de usar:  Ruby script/generate <parâmetros>  Ruby script/server
  33. 33. Rails • Antes de continuar o desenvolvimento devemos conhecer o rake  Um utilitário Ruby semelhante ao make do C/C++, ou Ant no Java.  Exemplo: • Rake db:create:all
  34. 34. Rails • Configuração do banco em config/database.yml O banco padrão do Rails é o SQLite3 que é um banco de dados embarcado São criados 3 contextos: desenvolvimento, teste e produção
  35. 35. Rails – primeiro C.R.U.D • Vamos utilizar o gerador scaffold (andaime) que é um gerador de c.r.u.d ruby script/generate scaffold project name:string description:string owner:string • Note que os atributos do seu modelo são passados para o script, e ele irá gerar uma migrate correspondente.
  36. 36. Rails – primeiro C.R.U.D • Saída do scaffold: Migrations (migrações) são um forma de evoluir o schema do banco de dados
  37. 37. Rails – primeiro C.R.U.D • Antes de analisarmos o ocorrido, vamos terminar a criação do nosso modelo. • Execute os comandos: Rake db:create:all O comando db:migrate irá aplicar as migrations que ainda não foram Rake db:migrate aplicadas.
  38. 38. Rails – primeiro C.R.U.D • Saída do db:migrate
  39. 39. Rails – primeiro C.R.U.D • Acesse a URL http://localhost:3000/projects
  40. 40. Rails – primeiro C.R.U.D • Vamos analisar os comandos do rake utilizados: Rake db:create:all  Esse comando utiliza o rake para criar as tabelas para todos os modelos ainda não criados
  41. 41. Rails – primeiro C.R.U.D Rake db:migrate  Construídas as tabelas devemos criar as colunas.  As migrations servem para criação incremental dos esquemas do banco de dados dos modelos
  42. 42. Rails – primeiro C.R.U.D • Vejamos primeiro a migration gerada: Nome do arquivo: Número de série composto pela data 20090816190631_create_projects.rb Tipo Nome da tabela
  43. 43. Rails – primeiro C.R.U.D • A migration de projeto está em: • Código:
  44. 44. • Código do modelo e do helper: • Estão vazios pois ainda não possuem nenhuma regra de negócio! • As colunas do banco serão injetadas pelo ActiveRecord como atributos no modelo
  45. 45. Rails – primeiro C.R.U.D • Código do controlador • Método index
  46. 46. Rails – Active Record • Vejamos alguns métodos que nossos modelos herdam de ActiveRecord::Base • save • find(id) • find(:all, :conditions => “”)  find(:first, :conditions => “”)  find(:last, :conditions => “”)  Parâmetros opcionais: • :join, :order, :limit, :offset, :select, :readonly, :from, :group, :lock ...
  47. 47. Rails – Active Record • Mais métodos  update_attributes(hash)  destroy  find_by_sql(string)
  48. 48. Rails – Active Record • Dinamic finders  find_all_by_name_and_age(name, age)  find_by_name(name)  find_by_age(name)  find_all_by_name_or_middle_name(name, middle_name)  etc
  49. 49. Rails – primeiro C.R.U.D • Params é um hash do Rails que possui todos os atributos do request. :id é o identificador do atributo id.
  50. 50. Rails – primeiro C.R.U.D
  51. 51. Rails – primeiro C.R.U.D
  52. 52. Rails • O flash é um hash que é apagado na próxima requisição, por isso ele é muito útil em guardar mensagens de sucesso, erro, etc.
  53. 53. Rails – primeiro C.R.U.D
  54. 54. Rails – primeiro C.R.U.D
  55. 55. Rails • O Rails cria um controlador para o modelo com URL’s rest, como pode ser observado • Essas url’s são criadas através de rotas map.connect ':controller/:action/:id' map.connect ':controller/:action/:id.:format' • As rotas ficam no arquivo config/routes.rb e são associadas aos controladores assim: map.resources :projects
  56. 56. • Vejamos como as views, telas, são criadas: Neste caso temos um layout Para o nosso controlador projects, mas poderiamos ter apenas um layout para aplicação toda: application.html.erb
  57. 57. Rails – primeiro C.R.U.D • Projects.html.erb
  58. 58. Rails • Onde ficam os arquivos css e javascript? A tag stylesheet_link_tag facilita o acesso aos arquivos css Código gerado na execução da aplicação.
  59. 59. Rails – primeiro C.R.U.D • Index.html.erb A tag <% é utilizada para executar algum comando ruby e <%= para escapar algum valor. *H é uma função de um helper, serve para não escapar o html
  60. 60. Rails • Rotas (rake routes)  projects_path listagem  project para o show (detalhamento)  new_project_path página de criação  edit_project_path(project) página de edição
  61. 61. Rails – primeiro C.R.U.D • New.html.erb e Edit.html.erb O new e o Edit são exatamente iguais, Mudando apenas o nome do botão submit. Suas operações são diferenciadas pelo método HTTP utilizado. Cria um formulário para o objeto informado, gerando a URL dependendo do método HTTP utilizado Apresenta as mensagens de erro, caso existam
  62. 62. Rails – primeiro C.R.U.D • Nosso modelo ainda não implementa nenhuma regra de negócio, vamos incrementar:  Para isso vamos utilizar os métodos validates_  Iremos validar o nome, que deve ser único, obrigatório, maior que cinco (5), menor que cinqüenta (50) e o responsável é obrigatório
  63. 63. Rails – primeiro C.R.U.D • Vejamos o novo código do modelo:
  64. 64. Rails – primeiro C.R.U.D
  65. 65. Dúvidas ?
  66. 66. Rails – segundo C.R.U.D • Vamos criar um novo modelo Bug que possui um projeto • Vamos atualizar o nosso modelo projeto, para que este possua vários Bug’s • Vamos relacionar os controladores ruby script/generate scaffold bug project:belongs_to description:string
  67. 67. Rails – segundo C.R.U.D • Vamos adicionar uma validação na migration criada
  68. 68. Rails – segundo C.R.U.D • Com as modificações feitas vamos atualizar o banco rake db:migrate
  69. 69. Rails – segundo C.R.U.D • Agora vamos relacionar projeto a bug • Um projeto poderá ter muitos bugs
  70. 70. Rails – segundo C.R.U.D • Com os modelos relacionados, vamos criar rotas relacionadas entre eles • Para isso vamos editar o arquivo config/routes.db • Removi a rota direta para bug
  71. 71. Rails – segundo C.R.U.D • Podemos pedir ao rake para nos informar todas as rotas possíveis com o comando: rake routes
  72. 72. Rails – segundo C.R.U.D • Vamos adicionar o link de “novo bug” em projeto/show.html.erb
  73. 73. Rails – segundo C.R.U.D • Vamos corrigir bug/new.html.erb para que esse realmente aponte para o projeto
  74. 74. Rails – segundo C.R.U.D • Depois de criado o bug vamos redirecionar para página do projeto
  75. 75. Rails – segundo C.R.U.D • Resultado http://localhost:3000/projetos/1 http://localhost:3000/projetos/1/bugs/new
  76. 76. Rails – segundo C.R.U.D • Vamos melhorar a apresentação do projeto exibindo os bugs, adicione na página projeto/show.html.erb
  77. 77. Rails – segundo C.R.U.D • Resultado
  78. 78. Rails – segundo C.R.U.D • Pronto! Agora precisamos apenas configurar nossa aplicação na página principal • Delete a página public/index.html que é a página de apresentação do projeto • E faça o mapeamento do controlador principal no arquivo config/routes.rb
  79. 79. Rails – segundo C.R.U.D • config/routes.rb
  80. 80. Rails – segundo C.R.U.D http://localhost:3000/
  81. 81. Quer aprender mais? http://www.pragprog.com/ http://www.urubatan.com.br/
  82. 82. Ruby on Rails na prática Obrigado ornelas.tulio@gmail.com twitter.com/tulios

×