Monthly Archives: June 2011

Tools used at a Grails Startup – technologies / infrastructure used at Secret Escapes

When I was interviewing a candidate recently, he asked about the hardware that we used at Secret Escapes. I replied that we used standard Linux boxen for our day to day development, but the question made me consider the vast amount of tools, plugins and services that our little website uses.

Secret Escapes is a private sales travel site. Our members sign up to our site and get the opportunity of booking hotels and vacation packages at the guaranteed lowest prices on the web in sales that only last for a week. You can read up more on what we do in this post written by one of our investors and in this article.

The heart of the Secret Escapes technology is Grails and Groovy. We are using Grails 1.3.7 and all our support and migration scripts are written in Groovy. It doesn’t seem like a lot of other Grails shops are sharing the tools and processes they use, so I thought it might be useful to catalog the ones we find useful in our every day development.

In this post, I want to highlight some of the tools we use, why we chose them, and how they help us solve problems. Continue reading

Running custom SQL in Grails database migration plugin changesets

Under the hood, the grails database migration plugin uses Liquibase. Liquibase offers the ability to insert arbitrary SQL in changesets.

This post highlights how to use the sql and sqlFile commands in liquibase to run arbitrary URLs in database migrations.

This feature is useful if you want to set default values for existing data in the database. It can also use to load data snapshots or ensure specific rows exist in your database.

This is also useful to pre-populate databases on certain beta cloud solutions that surprisingly won’t let you access their databases externally ( cough, CloudFoundry ).

Continue reading