white_wolf_17
@white_wolf_17

Как собрать все миграции в одну?

Проект разрабатывается несколькими программистами и за время собралось больше 20 файлов миграций. Можно ли как-нибудь объединить все миграции в одну. Чтобы при создании базы сразу создавалась актуальная база, а не основа, на которую будут наложены миграции
  • Вопрос задан
  • 406 просмотров
Решения вопроса 1
@vsuhachev
В рельсах есть файл db/schema.rb который:
1) обновляется после применения каждой миграции
2) рекомендуется хранить под версионным контролем
3) используется для создания схемы БД без миграций, см. рэйк-таск db:schema:load
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
index0h
@index0h
PHP, Golang. https://github.com/index0h
Миграция - это итерация изменения БД, с возможностью отката в случае ошибок. Поднимать вопрос об объединении миграций в одну имеет смысл только в случае, если это приводит к неприятным последствиям, например: поднятие dev окружение - больше часа выполняет UP БД, или в случае отката будут уничтожены данные (хотя за такую миграцию разработчику швабру кое куда засунуть надо), или еще чего. Просто "много файлов миграций" - это НЕ причина.

Вообще говоря можно сделать следующее: выполнить dump БД, а дальше создать отдельную миграцию, которая будет только выполнять этот dump.
Ответ написан
Комментировать
mainameiz
@mainameiz
Full-stack web-developer
Строго говоря, если у вас в миграциях используется код, которого уже нет в проекте, такие миграции нужно править самим (а лучше вообще не создавать никогда).

Еще посмотрите на https://github.com/jalkoby/squasher. Сам не пробовал, но вроде то что нужно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы