Archivos por la Categoría ‘Grails’

Liberada la versión 1.2.1 de Grails

Martes, Febrero 2nd, 2010

El día de ayer 1 de febrero salió la primera versión de mantenimiento de Grails 1.2.

Más que nada está enfocada a resolver ciertos bugs y mejorar el desempeño del framework.

Si deseas puedes ver la lista completa de problemas solucionados (en inglés): http://jira.codehaus.org/secure/ReleaseNote.jspa?projectId=11063&version=16060

También puedes descargarlo desde el siguiente link: http://grails.org/Download

Usando enums con Grails

Sábado, Noviembre 7th, 2009

Hay ocasiones en que necesitamos utilizar datos enumerados que son fijos en nuestras aplicaciones y por lo tanto crear una clase de dominio para tal fin sería talvez un poco excesivo. Grails permite utilizar las enumeraciones de Groovy para declarar un tipo de datos con valores fijos y poder hacer uso de él desde otras clases de nuestro sistema.

Para nuestro ejemplo veremos el caso de un Alumno, que sabemos que incluye varios campos incluyendo una de Sexo; veamos de qué forma podemos definir la clase Alumno con un atributo enumerado de tipo Sexo:

Primero creamos el tipo enumerado Sexo:

public enum Sexo {
  FEMENINO('Femenino'),
  MASCULINO('Masculino')
 
  String nombre
 
  Sexo(String nombre) {
    this.nombre = nombre
  }
 
  static list() {
    [FEMENINO, MASCULINO]
  }
}

Posteriormente creamos la clase Alumno, que hará uso de la enumeración anterior

class Alumno {
  String nombre
  Date fechaNacimiento
  Sexo sexo
  String grupo
 
  // Omitimos el resto de la clase por cuestiones de simplicidad
}

Con esto, GORM (el motor de mapeo de objeto-relación de Grails) automáticamente mapeará el valor de la propiedad Sexo a la columna de la tabla del Alumno. Por lo tanto, si le asignamos el valor de Sexo.MASCULINO a una instancia de Alumno, se guardará en la base de datos ‘Masculino’. Para usarlo en nuestras vistas no tenemos que hacer nada en especial, podemos usarlo de la siguiente manera:

<g:select name="sexo" id="sexo" from="${Sexo.list()}"
    value="${fieldValue(bean: usuario, field: 'sexo')}" optionValue="nombre"/>

No se necesita realizar nada en especial dentro del controlador de la clase Alumno. Definitivamente es un código mucho más sencillo y corto que si lo hubiéramos hecho con Java.

Versión 1.2 de Grails se retrasa

Miércoles, Noviembre 4th, 2009

Graeme Rocher, creador del framework Grails acaba de anunciar que la versión 1.2 de esta magnífica herramienta sufrirá un retraso de un mes aproximadamente (se supone que para el mes de diciembre). Aparentemente el retraso se debe a que la versión 1.2 depende de Spring 3.0 que igual está retrasado.

Mientras tanto, en los días siguientes se piensa presentar una versión preliminar que será la M4 que traerá las mejoras hechas hasta el momento.

Más información se puede encontrar en el siguiente link: http://old.nabble.com/Grails-1.2-Release-Status-Update-ts26197763.html

GrailsFlow: librería open source de procesos y flujos de trabajo

Domingo, Noviembre 1st, 2009

Grails lentamente va tomando más fuerza entre los frameworks de desarrollo web. Cada día salen más herramientas y librerías para cubrir todas las necesidades que nos surjan.

En esta ocasión platicaremos de GrailsFlow, que es una librería para control de procesos y flujos de trabajo (workflows), que puede ser integrada fácilmnte a aplicaciones de Groovy, Grails o incluso Java.

GrailsFlow ofrece las siguientes ventajas:

  • Sistema completo de control de procesos y flujos de trabajo.
  • Estructura muy simple y fácil de entender.
  • Lenguaje específico de dominio (DSL) basado en Groovy en lugar de XML para definir los procesos.
  • Interfaz de usuario para definir los procesos, administrar las listas de trabajo y monitoreo de procesos.

La versión actual es la 1.0 RC1 y ya está completamente estable como para ser usada en producción. Puedes descargarla o también obtener más información en su página web: http://www.grailsflow.org/

Primeros pasos con Grails

Sábado, Octubre 24th, 2009

Introducción

Últimamente han estado muy de moda los lenguajes dinámicos e interpretados, ya que se combinan muy bien con  la programación ágil que tan necesaria es en estos días. En esta ocasión, nos centraremos en conocer el lenguaje Groovy y más concretamente, el framework Grails.

Groovy es un lenguaje de programación orientado a objetos que está implementado sobre la plataforma de Java, y por lo tanto para su ejecución necesita de una máquina virtual de Java (JVM). Tiene características muy parecidas a Perl, Ruby y Python, aunque su sintaxis es muy similar a la de Java, y una de las principales ventajas es que puede tener acceso a todas las librerías existentes de Java (que son muchísimas). La versión estable más reciente al momento de escribir este artículo es la 1.6.

Grails por su parte, es un framework para aplicaciones web desarrollado sobre Groovy orientado al patrón de diseño MVC (Modelo-Vista-Controlador). Es un marco de trabajo muy productivo y se basa en paradigmas como la convención sobre configuración y no te repitas (DRY por sus siglas en inglés), y proporciona un entorno de desarrollo estandarizado y oculta gran parte de los detalles de configuración al programador. Es un marco de trabajo muy estable ya que se está construido a partir de librerías ampliamente utilizadas en el mundo de Java, como son Hibernate y Spring.

En el siguiente tutorial crearemos un proyecto muy sencillo con Grails para mostrar la funcionalidad básica.

Instalando Groovy y Grails

Para instalar Groovy es necesario realizar los siguientes pasos:

  1. Primero, es necesario descargar una distribución binaria y luego descomprimirla en alguna carpeta.
  2. Establecer la variable de ambiente GROOVY_HOME hacia la carpeta donde lo descomprimimos.
  3. Agregar GROOVY_HOME/bin a la variable de ambiente PATH del sistema operativo.
  4. Establecer la variable JAVA_HOME al directorio de instalación del JDK. En Windows esto es normalmente en c:\Archivos de Programa\Java\jdk[versión instalada], en el OS X se instala normalmente en /Library/Java/Home y en Linux en /usr/java.

Posteriormente, necesitaremos instalar Grails siguiendo estas instrucciones:

  • Descarga la versión más reciente de Grails.
  • Extrae los archivos en alguna carpeta del sistema.
  • Crea la variable de ambiente GRAILS_HOME que apunte a la carpeta donde se descomprimieron los archivos.
  • Anexa GRAILS_HOME\bin al PATH del sistema.
  • Teclea “grails” en la línea de comandos y si sale un mensaje de ayuda, ya todo estará instalado correctamente.

Es importante notar que como se mencionó anteriormente, Groovy se ejecuta sobre la plataforma de Java, por lo tanto es necesario tener instalado el JDK que puede ser descargado desde la página de Sun.

Creando el proyecto

Una vez que ya está instalado todo, podemos empezar a programar con Grails. Para crear un proyecto, primero nos situamos en la carpeta donde queremos crearlo mediante la línea de comandos y luego tecleamos lo siguiente:

grails create-app

Se te preguntará por el nombre del proyecto y se generará un proyecto con la siguiente estructura:

%CARPETA_PROYECTO%
    + grails-app
       + conf                 --- Archivos de configuración
           + hibernate              --- Configuración opcional de Hibernate
           + spring                 --- Configuración opcional de Spring
       + controllers          --- Directorio para los controladores
       + domain               --- Directorio para los objetos de dominio (modelo)
       + i18n                 --- Directorio para los mensajes para localizar la aplicación
       + services             --- Directorio para los servicios
       + taglib               --- Directorio para las librerías de etiquetas
       + util                 --- Directorio para utilerías diversas
       + views                --- Directorio para las vistas
           + layouts              --- Directorio para las vistas maestras
   + lib
   + scripts                  --- Directorio para scripts
   + src
       + groovy               --- Opcional: archivos de Groovy adicionales.
       + java                 --- Opcional: archivos Java
   + test                     --- Clases generadas para realizar pruebas
   + web-app
       + WEB-INF

Configurando un Origen de Datos (opcional)

El script “create-app” creó un archivo de configuración del origen de datos en el directorio “/grails-app/conf” con el nombre de DataSource.groovy con closures (link para más información en inglés) para cada uno de los ambientes estándar: Desarrollo (Development), Pruebas (TestData) y Producción (Production). Todos los ejemplos de este artículo utilizan el ambiente de Desarrollo.

Por defecto, todos los orígenes de datos están configurados para utilizar la base de datos HSQLDB (excelente para realizar pruebas, pero talvez no tan útil para producción).

dataSource {
  pooled = false
  driverClassName = "org.hsqldb.jdbcDriver"
  username = "sa"
  password = ""
}
// environment specific settings
environments {
  development {
    dataSource {
      dbCreate = "create-drop" // one of 'create', 'create-drop','update'
      url = "jdbc:hsqldb:mem:devDB"
    }
  }
  test {
    dataSource {
      dbCreate = "update"
      url = "jdbc:hsqldb:mem:testDb"
    }
  }
  production {
    dataSource {
      dbCreate = "update"
      url = "jdbc:hsqldb:file:prodDb;shutdown=true"
    }
  }
}

Para configurar otro origen de datos sólo se necesita cambiar los valores de “url” para seleccionar la base de datos deseada y poner el archivo jar del driver en la carpeta “lib”.

Creando una clase de Dominio

Asegúrate de estar en el directorio raíz del proyecto y teclea lo siguiente:

cd tutorial1
grails create-domain-class

El comando nos preguntará el nombre de la clase que será creada. Respondamos al comando con “libro”, lo que nos generará el archivo Libro.groovy en el directorio “Domain” del proyecto. Es un archivo de texto plano, por lo que puede ser editado con cualquier editor de texto.

Nota: Para nombrar tus clases de dominio, no se deben utilizar nombres de palabras clave de la base de datos. Tampoco se deben utilizar nombres como por ejemplo MILibro (que tengan dos o más letras mayúsculas al inicio), pero MiLibro es completamente permitido. Aparentemente Grails tiene problemas con ese tipo de nombres, ya que a veces se generan errores 404 (página no encontrada).

Una clase de dominio es un elemento persistente y todas sus propiedades son guardadas automáticamente a la base de datos.
Pongamos lo siguiente en el archivo Libro.groovy:

class Libro {
  String titulo
  String autor
}

En este punto, probablemente sea buena idea tener datos para poder realizar pruebas. Una forma fácil de hacerlo es utilizando el método “init” del archivo “conf/BootStrap.groovy” como se muestra a continuación:

class BootStrap {
  def init = { servletContext ->
    new Libro(titulo:'100 años de soledad', autor:'Gabriel García Márquez').save()
    new Libro(titulo:'La casa de los espíritus', autor:'Isabel Allende').save()
  }
  def destroy = { }
}

Creando un Controlador

Los controladores son la parte central de las aplicaciones de Grails, ya que ellos controlan las peticiones que reciben de parte de los navegadores y los mapean a las clases y métodos correspondientes.

En este paso es necesario que ejecutes el comando “grails create-controller” y de nuevo se te pedirá un nombre para el controlador a crear. En nuestro caso tecleamos “Libro” lo que nos generará el archivo “grails-app/controllers/LibroController.groovy”.

Como siguiente paso, abrimos el archivo recién generado y utilizaremos una característica de Grails llamada Scaffolding para generar parte de la aplicación dinámicamente en tiempo de ejecución.

class LibroController {
  def scaffold = Libro
}

Nota:Es necesario quitar o comentar el código “def index = {}” que existe en el archivo para que funcione correctamente el Scaffolding.

También podriamos haber hecho uso del comando “grails generate-all” (recuerda que siempre se deben ejecutar en el directorio raíz del proyecto), el cual crearía todos los archivos necesarios por ti (controlador, vistas).

Resultado final

Por último, sólo nos resta ejecutar el servidor integrado de rails para ver el resultado final de nuestra aplicación web:

grails run-app

Esto iniciará una instancia del servidor web integrado y que escuchará las peticiones en el puerto 8080. Si deseas que escuche en otro puerto, necesitas indicarle la configuración al momento de ejecutarlo:

grails -Dserver.port=8090 run-app

Para visualizar la lista de libros escribe en tu navegador la siguiente dirección:

http://localhost:8080/tutorial1/libro/list

O como el método “list” es el que se llama por defecto, también lo podemos omitir:

http://localhost:8080/tutorial1/libro

lista_libros

Hasta aquí con este tutorial sencillo de Grails, más adelante analizaremos más a fondo otros aspectos que lo hacen un gran entorno de desarrollo.