Как получить SQL-скрипт изменений от Rails-миграций (для MySQL)?

Я видел http://github.com/muness/migration_sql_generator, но он не работает должным образом с MySQL для некоторых важных операций. Есть ли другой способ, которым мы можем захватить sql, сгенерированный во время миграции рельсов?

Причина, по которой я спрашиваю, состоит в том, что я не могу запустить миграцию на производственном сервере, поскольку он поддерживается технической поддержкой (и никогда не затрагивался разработчиками) в моей компании. Разработчики предоставляют файл технической поддержки JRuby on Rails технической поддержке и разворачивают его через Tomcat. Но убедить техподдержку в установке JRuby и Rails просто для запуска миграции на производство определенно будет непросто. Мы хотим сделать развертывание действительно простым и иметь как можно меньше зависимостей.

Мы хотим просто предоставить им военный файл и SQL-скрипт с изменениями в БД.

2 ответа

Решение

Я фактически закончил тем, что создал задачу rake, которая была исправлена ​​методом выполнения sql Activerecord, чтобы также вывести все sql в файл журнала (log/database.log). Таким образом, задача может быть выполнена прямо перед db:migrate вот так: rake db:log db:migrate, После этого вы можете извлечь соответствующие утверждения и поместить их в db/sql_migrations/<migration name>.sql файл и пусть ваши администраторы базы данных запустят это, когда они будут готовы.

К счастью, я сменил работу и больше не должен иметь дело с этим беспорядком процесса.:)

Вы можете использовать какой-то инструмент для генерации различий из двух баз данных. Здесь есть вопрос.

Если вы добавите тестовую базу данных в базу данных разработки сразу после выполнения миграции, это, вероятно, будет самым простым способом. Возможно, даже стоит добавить грабли для этого; получить эту задачу грабли, чтобы зависеть от миграции, и тогда вы могли бы использовать новую задачу вместо rake db:migrate генерировать различия каждый раз, когда вы мигрируете.

Другие вопросы по тегам