Как получить 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
генерировать различия каждый раз, когда вы мигрируете.