I use liquibase in all environments "north" of development to manage the database schema and reference data, but still use create-drop while developing locally. It can be a pain to construct changesets by hand, but it's also awkward to run grails generate-changelog (especially if development normally uses an in memory database). Much better if you could see the generated changelog while the application is running. Here's how...
import liquibase.database.*
import liquibase.diff.*
import java.sql.Connection
class LiquibaseController {
def dataSource
def index() {
Connection connection = dataSource.connection
DatabaseFactory factory = DatabaseFactory.getInstance()
Database database = factory.findCorrectDatabaseImplementation(connection)
database.setDefaultSchemaName('schemaName')
Diff diff = new Diff(database, 'schemaName')
DiffResult diffResult = diff.compare()
diffResult.printChangeLog(new PrintStream(response.outputStream), database)
response.contentType = 'text/xml'
response.outputStream.flush()
}
}
S.