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

Grails from scratch

on

  • 2,455 views

Tutorial básico sobre grails

Tutorial básico sobre grails

Statistics

Views

Total Views
2,455
Views on SlideShare
1,891
Embed Views
564

Actions

Likes
0
Downloads
19
Comments
0

2 Embeds 564

http://gustavopinto.wordpress.com 563
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 Grails from scratch Presentation Transcript

    • Grails from scratch Gustavo Pinto gustavopinto.org twitter.com/gustavopinto
    • Agenda Introdução Modelos ágeis Groovy Hands on Grails Da instalação à aplicação Dicas
    • 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
    • Introdução Necessidades básicas D.R.Y principle convention-over-configuration Lightweight
    • Introdução D.R.Y principle ? convention-over-configuration ? lightweight ?   O Que usar?
    • Introdução D.R.Y principle ? convention-over-configuration ? lightweight ? GRAILS
    • Introdução D.R.Y principle ? convention-over-configuration ? lightweight ? GRAILS
    • 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 
    • Groovy Radar de tecnologia - ThoughtWorks
    • Groovy groovyconsole.appspot.com
    • Rails
    • Groovy + Rails = Grails Instalação Primeiros comandos Padrão de projetos Domain Classes Controllers e Views Validações Relacionamentos Grails ORM (GORM) 
    • Grails Instalação   Download do arquivo grails.a.b.c.zip Descopactar e declarar a variável GRAILS_HOME   Digilte: grails
    • 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
    • Grails Primeiros comandos $ grails create-app racetrack $ cd racetrack $ grails run-app $ grails war $ grails clean
    • 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
    • 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
    • C M            Grails V Padrão de projetos
    • C M            Grails V Padrão de projetos Lembre-se:  Convention over Configuration
    • Grails Domain Classes Definem os elementos da aplicação Inscrição para a corrida nome, email, pago?
    • Grails Domain Classes Definem os elementos da aplicação Inscrição para a corrida nome, email, pago? $ grails create-domain-class Inscricao  
    • Grails Domain Classes Definem os elementos da aplicação Inscrição para a corrida nome, email, pago? $ grails create-domain-class Inscricao  
    • 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       .... }
    • 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       .... }
    • 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       .... }
    • 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 = {     } }
    • 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 = {     } }
    • Grails Domain Classes $ grails create-domain-class Corrida   class Corrida {      String nome      Date dataIncio      String cidade      String estado      BigDecimal distancia      BigDecimal custo        .... }
    • Grails Domain Classes $ grails create-domain-class Corrida   class Corrida {      String nome      Date dataIncio      String cidade      String estado      BigDecimal distancia      BigDecimal custo        .... }
    • Grails Controllers e Views $ grails create-controller Corrida $ grails generate-views
    • Grails Controllers e Views class CorridaController { $ grails create-controller Corrida     def scaffold = Corrida $ grails generate-views }
    • 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
    • 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
    • Grails
    • 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
    • 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)     }
    • Grails Validações email crediCard password inList matches min, max range minSize, notEqual maxSize, size unique url validator
    • Grails Validações Personalizando Mensagens   no arquivo: i18n/messages.properties
    • 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
    • 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
    • Grails Relacionamentos Uma corrida tem muitas inscrições   1 x N class Corrida {   .....   static hasMany = [inscricao:Inscricao, ....] }
    • Grails Relacionamentos Uma corrida tem muitas inscrições   1 x N class Corrida {   .....   static hasMany = [inscricao:Inscricao, ....] }   class Inscricao {    ....   static belongsTo = [corrida:Corrida] }
    • 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] }
    • Grails Grails ORM Nenhuma necessidade de configuração DAOS?
    • Grails Grails ORM Nenhuma necessidade de configuração DAOS?   Dynamic domain class methods
    • Grails Grails ORM Nenhuma necessidade de configuração DAOS?   Dynamic domain class methods save findAll delete find get list count etc
    • Grails Grails ORM Nenhuma necessidade de configuração DAOS?   DBVisualizer: Conectar na base do Grails
    • Dicas grails.org grailsbrasil.com
    • Dúvidas
    • Grails from scratch Gustavo Pinto gustavopinto.org twitter.com/gustavopinto