Я использовал SchemaUpdate Hibernate для выполнения той же функции, что и миграции. На самом деле это проще, чем миграция, потому что каждый раз, когда вы запускаете свое приложение, оно проверяет структуру базы данных и синхронизирует ее с вашими сопоставлениями, поэтому никаких дополнительных граблей нет: db: migrate step и ваше приложение никогда не может быть не синхронизировано с базой данных, которую оно запускает против. Файлы отображения Hibernate не сложнее миграций Rails, поэтому даже если вы не использовали Hibernate в приложении, вы можете воспользоваться этим. Недостатком является то, что он не так гибок, как откат, миграция вниз, выполнение операторов DML. Как указано в комментариях, он также не удаляет таблицы или столбцы. Я запускаю отдельный метод, чтобы сделать это вручную, как часть процесса инициализации Hibernate.
Я не понимаю, почему вы не можете использовать миграцию Rails - пока вы не возражаете против установки стека (Ruby, Rake, Rails), вам не нужно будет трогать ваше приложение.