Your SlideShare is downloading. ×
0
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Grails from scratch
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Grails from scratch

2,180

Published on

Tutorial básico sobre grails

Tutorial básico sobre grails

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,180
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
23
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

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

×