Grails from scratch
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Grails from scratch

on

  • 2,539 views

Tutorial básico sobre grails

Tutorial básico sobre grails

Statistics

Views

Total Views
2,539
Views on SlideShare
1,954
Embed Views
585

Actions

Likes
0
Downloads
19
Comments
0

2 Embeds 585

http://gustavopinto.wordpress.com 584
http://webcache.googleusercontent.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Grails from scratch Presentation Transcript

  • 1. Grails from scratch Gustavo Pinto gustavopinto.org twitter.com/gustavopinto
  • 2. Agenda Introdução Modelos ágeis Groovy Hands on Grails Da instalação à aplicação Dicas
  • 3. Introdução Modelos ágeis Processos,  técnicas, ferramentas, whatever   O que é ser ágil?   Porque precisamos ser ágeis?    Duas coisas que influenciam na agilidade A atitude dos membros da equipe As ferramentas
  • 4. Introdução Necessidades básicas D.R.Y principle convention-over-configuration Lightweight
  • 5. Introdução D.R.Y principle ? convention-over-configuration ? lightweight ?   O Que usar?
  • 6. Introdução D.R.Y principle ? convention-over-configuration ? lightweight ? GRAILS
  • 7. Introdução D.R.Y principle ? convention-over-configuration ? lightweight ? GRAILS
  • 8. Groovy Linguagem OO baseada no Java Mas com boas idéias de outras linguagens Ruby, Python Roda na JVM Tipagem dinâmica Onde tudo é objeto Pode ser usada como script  Sem algumas burocracias do Java  Sintax Familiar 
  • 9. Groovy Radar de tecnologia - ThoughtWorks
  • 10. Groovy groovyconsole.appspot.com
  • 11. Rails
  • 12. Groovy + Rails = Grails Instalação Primeiros comandos Padrão de projetos Domain Classes Controllers e Views Validações Relacionamentos Grails ORM (GORM) 
  • 13. Grails Instalação   Download do arquivo grails.a.b.c.zip Descopactar e declarar a variável GRAILS_HOME   Digilte: grails
  • 14. Grails Instalação   Download do arquivo grails.a.b.c.zip Descopactar e declarar a variável GRAILS_HOME   Digilte: grails gustavo@zeus:~$ grails Welcome to Grails 1.3.2 - http://grails.org/ Licensed under Apache Standard License 2.0 Grails home is set to: /opt/grails-1.3.2 No script name specified. Use 'grails help' for more info or 'grails interactive' to enter interactive mode
  • 15. Grails Primeiros comandos $ grails create-app racetrack $ cd racetrack $ grails run-app $ grails war $ grails clean
  • 16. Grails Primeiros comandos $ grails create-app racetrack Welcome to Grails 1.2 - http://grails.org/ Licensed under Apache Standard License 2.0 Grails home is set to: /opt/grails ... Created Grails Application at /web/racetrack
  • 17. Grails Primeiros comandos $ grails [–Dserver.port=9090] run-app ... Base Directory: /Users/sdavis/web/racetrack Running script /opt/grails/scripts/RunApp.groovy Environment set to development [mkdir] Created dir: /Users/sdavis/.grails/1.2/projects/racetrack/classes [groovyc] Compiling 6 source files to /Users/sdavis/.grails/1.2/projects/racetrack/classes ... Running Grails application.. Server running. Browse to http://localhost:8080/racetrack
  • 18. C M            Grails V Padrão de projetos
  • 19. C M            Grails V Padrão de projetos Lembre-se:  Convention over Configuration
  • 20. Grails Domain Classes Definem os elementos da aplicação Inscrição para a corrida nome, email, pago?
  • 21. Grails Domain Classes Definem os elementos da aplicação Inscrição para a corrida nome, email, pago? $ grails create-domain-class Inscricao  
  • 22. Grails Domain Classes Definem os elementos da aplicação Inscrição para a corrida nome, email, pago? $ grails create-domain-class Inscricao  
  • 23. Grails Domain Classes Definem os elementos da aplicação Inscrição para a corrida nome, email, pago? $ grails create-domain-class Inscricao   class Inscricao {       String nome       Date dataAniversario            String email       Boolean pago       .... }
  • 24. Grails Domain Classes Definem os elementos da aplicação Inscrição para a corrida nome, email, pago? $ grails create-domain-class Inscricao   class Inscricao {       ....              dateCreated       lastUpdated       .... }
  • 25. Grails Domain Classes Definem os elementos da aplicação Inscrição para a corrida nome, email, pago? $ grails create-domain-class Inscricao   class Inscricao {       ....              dateCreated variáveis especiais       lastUpdated       .... }
  • 26. Grails Domain Classes Definem os elementos da aplicação Inscrição para a corrida nome, email, pago? class Inscricao { $ grails create-domain-class Inscricao     .....       def beforeInsert = { class Inscricao {         // codigo       ....   }            def beforeUpdate = {       dateCreated     }       lastUpdated     def beforeDelete = {       ....     } }     def onLoad = {     } }
  • 27. Grails Domain Classes Definem os elementos da aplicação Inscrição para a corrida nome, email, pago? class Inscricao {     .....     def beforeInsert = {         // codigo Para saber mais:    } http://grails.org/GORM+-+Mapping+DSL.     def beforeUpdate = {     }     def beforeDelete = {     }     def onLoad = {     } }
  • 28. Grails Domain Classes $ grails create-domain-class Corrida   class Corrida {      String nome      Date dataIncio      String cidade      String estado      BigDecimal distancia      BigDecimal custo        .... }
  • 29. Grails Domain Classes $ grails create-domain-class Corrida   class Corrida {      String nome      Date dataIncio      String cidade      String estado      BigDecimal distancia      BigDecimal custo        .... }
  • 30. Grails Controllers e Views $ grails create-controller Corrida $ grails generate-views
  • 31. Grails Controllers e Views class CorridaController { $ grails create-controller Corrida     def scaffold = Corrida $ grails generate-views }
  • 32. Grails Controllers e Views scaffold: gera uma aplicação inteira para uma determinada classe de domínio, incluindo: As views necessárias Controle de ações de um CRUD
  • 33. Grails Controllers e Views scaffold: gera uma aplicação inteira para uma determinada classe de domínio, incluindo: As views necessárias Controle de ações de um CRUD scaffold: não é o fim, é apenas o começo
  • 34. Grails
  • 35. Grails Validações 1. Apenas inscrições de estados próximos 2. O custo não pode ser maior que 100 3. Toda corrida precisa de um nome 4. Não existe distância negativa
  • 36. Grails Validações 1. Apenas inscrições de estados próximos 2. O custo não pode ser maior que 100 3. Toda corrida precisa de um nome 4. Não existe distância negativa     static constraints = {            nome(blank:false, maxSize:50)            estado(inList:["PA", "AM", "MA", "AC"])            cidade()                       distancia(min:0.0)            custo(min:0.0, max:100.0)     }
  • 37. Grails Validações email crediCard password inList matches min, max range minSize, notEqual maxSize, size unique url validator
  • 38. Grails Validações Personalizando Mensagens   no arquivo: i18n/messages.properties
  • 39. Grails Validações Personalizando Mensagens   no arquivo: i18n/messages.properties   corrida.nome.blank=Por favor, forneça um nome para corrida corrida.nome.maxSize.exceeded=O nome da corrida não pode ser maior que {3} letras
  • 40. Grails Validações Personalizando Mensagens   no arquivo: i18n/messages.properties   corrida.nome.blank=Por favor, forneça um nome para corrida corrida.nome.maxSize.exceeded=O nome da corrida não pode ser maior que {3} letras classe . objeto . propriedade . [propriedade] = Mensagem
  • 41. Grails Relacionamentos Uma corrida tem muitas inscrições   1 x N class Corrida {   .....   static hasMany = [inscricao:Inscricao, ....] }
  • 42. Grails Relacionamentos Uma corrida tem muitas inscrições   1 x N class Corrida {   .....   static hasMany = [inscricao:Inscricao, ....] }   class Inscricao {    ....   static belongsTo = [corrida:Corrida] }
  • 43. Grails Relacionamentos Uma corrida tem muitas inscrições   1 x N class Corrida {   .....   static hasMany = [inscricao:Inscricao, ....] Força update } e delete em cascata   class Inscricao {    ....   static belongsTo = [corrida:Corrida] }
  • 44. Grails Grails ORM Nenhuma necessidade de configuração DAOS?
  • 45. Grails Grails ORM Nenhuma necessidade de configuração DAOS?   Dynamic domain class methods
  • 46. Grails Grails ORM Nenhuma necessidade de configuração DAOS?   Dynamic domain class methods save findAll delete find get list count etc
  • 47. Grails Grails ORM Nenhuma necessidade de configuração DAOS?   DBVisualizer: Conectar na base do Grails
  • 48. Dicas grails.org grailsbrasil.com
  • 49. Dúvidas
  • 50. Grails from scratch Gustavo Pinto gustavopinto.org twitter.com/gustavopinto