martes, 12 de febrero de 2013

Primeros pasos con Play! Part 2


Bueno vamos a hacer la primera aplicación con scala. Que necesitamos??

  • Tener play instalado como lo indica aquí
  • Tener Scala-IDE que se puede bajar de aquí o algún editor como vi, nano, etc.

En el comando escribimos play new nombreDeLaAplicacion

Ahora se va a ejecutar un programa interactivo que nos va a preguntar el nombre del proyecto y si vamos usar java o scala. Luego de finalizar hacemos ls para verificar que se creo la carpeta del proyecto.

Si hacemos cd nombreDeLaAplicacion podemos ver los siguientes directorios:

app: se encuentra el core de la aplicación; se encuentran los objetos del modelo, controles y vistas. Aquí se encuentran los .scala
conf: se encuentran las configuraciones, application.conf, routes y archivo de internacionalización.
project: se encuentran los scripts de creación estos se basan en sbt.
public: contiene todos los recursos publicos como imagenes, css, javascripts, etc.
test: se encuentran todos los test que se escriben como especificaciones Specs2

Ojo play utiliza UTF-8 como única codificación. Por lo tanto todo tiene que estar acorde a esta codificación.

Ahora podemos utilizar la consola play ejecutando el comando play dentro del directorio del proyecto.

play
(demora un rato)
run

Con run estamos corriendo el ejemplo. Si todo fue bien van a poder ver la linea:

[info] play - Listening for HTTP on /0:0:0:0:0:0:0:0:9000

Ahora vamos al browser (cual quiera) y vamos a la url: http://localhost:9000/

Y va a salir una pagina de play. Que esto? Nuestra aplicación funcionando!!

Que sucedió? Por qué me muestra esta pagina? Lo que sucede es que existe un archivo llamado conf/routes el cual define todos los accesos a la aplicación. Es decir con que url llegas a que pagina. Existe una linea así:

GET     /       controllers.Application.index

Lo que indica es que con / vamos a el controlador Application al método index. Si hacemos un cat de app/controllers/Application.scala podremos ver:

cat  app/controllers/Application.scala

package controllers

import play.api._
import play.api.mvc._

object Application extends Controller {
 
  def index = Action {
    Ok(views.html.index("Your new application is ready."))
  }
 
}

Como se puede ver el controlador devuelve un Action el cual maneja las respuestas del pedido del browser. Si el resultado de la petición es 200(ok) el Action devuelve la vista index. Esta vista se puede ver haciendo: cat app/views/index.scala.html

@(message: String)

@main("Welcome to Play 2.1") {
   
    @play20.welcome(message)
   
}

Como podemos ver recibe como parámetro un string (message) y con el imprime la pagina de bienvenida de play.
Antes de hacer una modificación vamos a configurar Eclipse, pero esa es otra historia...

to be continued ...