viernes, 20 de noviembre de 2009

Scala & Lift Web Framework

Bueno despues de casi un año de haber abierto el blog he decidido crear un primer articulo y lo voy a basar en crear un pequeno proyecto en Scala+Lift y luego migrarlo a Eclipse Galileo (Voy a comer las ñ(nh), tildes, etc ya que este teclado en Ubuntu no me funca el Alt izq jeje).
Para empezar hay que que tener el JDK de Sun


Eclipse Galileo y el plugin de Scala IDE.
Despues de googlear un poco sobre proyectos web con Scala encontre muy buenas referencias sobre Lift WebFramework para intregrarlo en el proyecto (Xq sera que ese background me recuerda a Twitter??? xD )
Como vamos a crear el esqueleto del proyecto de manera independiente vamos a hacerlo desde Maven.
Luego de bajar y descomprimir el tar.gz de Maven hay que configurar un par de variables de ambiente asi que nos vamos a modificar el profile de nuestro usuario:

Respaldamos el profile

gishac@gishac-ubuntu:/etc$ sudo cp profile profile_backup

Agregamos un par de variables de ambiente que necesita Maven al profile
Para editar el profile
gishac@gishac-ubuntu:/etc$ sudo gedit profile

Colocamos la siguiente linea (en mi caso puse la r
uta de instalacion del jdk) al final del archivo
JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.15 export JAVA_HOME

Colocamos las siguientes lineas donde se define el home del Maven al final del archivo (esta es la ruta donde descomprimimos el tar de Maven, en mi caso) y modificamos la variable PATH

M2_HOME=/home/gishac/program_files/apache-maven-2.2.1 export M2_HOME
PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin


Despues de editar el profile reiciamos... (Windows style)

Ahora si podemos verificar si todo esta OK



Ahora si ya tenemos todo listo para crear el proyecto, comenzamos con la estructura del proyecto Lift desde maven con los siguientes comandos:

mvn archetype:generate-U

Nos muestra la lista de archetypes y escogemos el 32

Aqui llenamos algunos valores que nos pide para el archetype lift: groupId, artifactId, version(en blanco), y el package:

Luego de confirmar con Y obtenemos el resultado de crear el esqueleto del proyecto

Para darle un check a nuestro proyecto levantamos el web server, primero nos ubicamos en el directorio donde se nos genero el proyecto y luego desde el maven iniciamos el jetty:

cd scalademo
mvn jetty:run

Ahora si ya tenemos levantada nuestra web app :D

Para facilitarnos la edicion importamos el proyecto en Eclipse como un proyecto Maven, se debe tener instalado un plugin de Maven

http://m2eclipse.sonatype.org/

Una vez importado el proyecto creamos las configuraciones de Run y Stop basado en Maven.

Click derecho sobre el proyecto-> Run As -> Run Configurations
Sobre la opcion de Maven Build creamos 2 nuevas configuraciones:

Jetty Start

Jetty Stop


Listo ahora si podemos modificar desde Eclipse nuestra aplicacion Scala y lo vemos reflejado al hacer deploy sobre el web server, teniendo como directorios mas importantes:

src/main/scala

src/main/web-app

src/main/web-app/templates-hidden

Algo importante en modificar es en el archivo Boot.scala dentro del package bootstrap.liftweb, al momento de indicarle en que paquete el framework debe buscar las clases de snippets, la linea debe quedar asi para nuestro caso:

LiftRules.addToPackages("scalademo")

En este punto ya podemos modificar los archivos html para mostrar lo que querramos, guardamos y mandamos a correr el proyecto:

Run as-> Maven Build-> Seleccionamos la configuracion Jetty_Run_Config

Listo, tenemos un pequenho inicio a Scala+Lift con Eclipse!