Eu usei o SchemaUpdate do Hibernate para executar a mesma função que as migrações. Na verdade, é mais fácil do que as migrações porque toda vez que você inicia seu aplicativo, ele examina a estrutura do banco de dados e a sincroniza com seus mapeamentos para que não haja rake: db: migrate passo extra e seu aplicativo nunca pode ficar fora de sincronia com o banco de dados que está executando contra. Os arquivos de mapeamento do Hibernate não são mais complexos do que as migrações do Rails, então mesmo que você não use o Hibernate no aplicativo, você pode tirar vantagem disso. A desvantagem é que não é tão flexível quanto reverter, migrar para baixo e executar instruções DML. Conforme apontado nos comentários, ele também não descarta tabelas ou colunas. Eu executo um método separado para fazer isso manualmente como parte do processo de inicialização do Hibernate.
Eu não vejo porque você não pode usar migrações Rails - contanto que você não se importe em instalar a pilha (Ruby, Rake, Rails), você não terá que mexer no seu aplicativo.