Grails: Ejecutar script de h2 en pruebas

Grails es un excelente framework web. En entornos de prueba usa H2 (desde la versión 2.0) o HSQLDB (en las versiones 1.3.x) como motores de base de datos en memoria para pruebas. Ahora bien, con un modelo de dominio que usa una tabla en un esquema propio:

class TestDomain {

	Date dateCreated
	Date lastUpdated
	Long budget
	
	static mapping = {
		table schema:"my_schema"
	}
}

no se puede confiar en el hbm2ddl para crear el esquema “my_schema”, para solucionar esto es posible usar la capacidad de H2 de ejecutar un script una vez se crea la base (en DataSource.groovy):

test {
        dataSource {
			pooled = false
            dbCreate = "update"
            url = "jdbc:h2:mem:testDb;MVCC=TRUE;MODE=PostgreSQL;INIT=CREATE SCHEMA IF NOT EXISTS my_schema"
        }
    }

Sin embargo se ve algo feo y no es muy extensible (generalmente se tienen varios esquemas de base de datos) así que lo mejor es usar un archivo sql, pero (siempre hay uno) la versión que viene con grails 2.0 no soporta esta característica, H2 incorporó la capacidad de ejecutar archivos con rutas relativas desde la versión 1.3.150 Beta (2011-01-28) (Mejorado en la versión 1.3.154 (2011-04-04)) así que es necesario sobreescribir la dependencia en BuildConfig.groovy:

dependencies {
        // specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes eg.

        // runtime 'mysql:mysql-connector-java:5.1.16'
		test 'com.h2database:h2:1.3.160'
    }

De esa manera podemos incluir un archivo sql en src/java y usarlo en la inicialización de la base de datos de pruebas:

test {
        dataSource {
			pooled = false
            dbCreate = "update"
            url = "jdbc:h2:mem:testDb;MVCC=TRUE;MODE=PostgreSQL;INIT=RUNSCRIPT FROM 'classpath:create-schemas.sql'"
        }
    }

Disclaimer: Este post está basado en la solución de JAKUB NABRDALIK

Anuncios

Instalar grails en ubuntu

Pues grails tiene repositorio ppa, para instalar cualquier version de grails (1.2, 1.3, 2.0) basta con agregar el siguiente repositorio desde consola:

sudo add-apt-repository ppa:groovy-dev/grails
sudo apt-get update

Y luego instalar la versión

sudo apt-get install grails-1.2.5
sudo apt-get install grails-1.3.7
sudo apt-get install grails-2.0.0
sudo apt-get install grails

y para seleccionar una de las multiples versiones instaladas

sudo update-alternatives --config grails

lo mejor es que no se necesita actualizar la variable GRAILS_HOME para tener acceso desde la consola.

Blogs de tecnología Colombia

Con el boom de comunidades tecnológicas que hay en Colombia (hice un pequeño recuento de las de Bogotá hace poco), traté de buscar los blogs acerca de Java o tecnologías relacionadas y hasta ahora he encontrado algunos resultados:

  • Java and ME: Blog de Alexis Lopez acerca de Java y enfocado en el desarrollo hacia móviles, escrito en ingles.
  • Memories of the trail:Blog de Rafael Carrascal sobre desarrollo
  • Tips de Grails en Español:Blog de Raul Amarú sobre grails
  • Andronautas:Blog acerca de android en español
  • Droidforum: Nueva comunidad acerca de android en Colombia
  • Elektropia: Blog de Camilo Bernal y Jackson Moreno con interesantes articulos y opiniones sobre tecnologia

Supongo que hay muchos más pero no es sencillo identificarlos.