Какой хороший способ очистить мои миграции в Rails? - PullRequest
12 голосов
/ 26 июля 2011

Итак, я работаю над этим веб-приложением уже год, и я хотел бы скомпилировать схему в ОДНУ миграцию, чтобы мой текстовый редактор загружался быстрее, рабочий каталог git не загроможден.

Поиск будет быстрее.

Любой мой config / db не будет иметь длину 4000px.

Ответы [ 4 ]

11 голосов
/ 26 июля 2011

Удалите файлы миграции после миграции серверов. Если вы когда-нибудь захотите начать с нового развертывания, запустите rake db:schema:load или rake db:setup. Вы не должны перезапускать все ваши миграции, как объяснено здесь .

8 голосов
/ 26 июля 2011

Вам не нужно держать свои миграции навсегда, вы можете удалить их, как только вы уверены, что они вам больше не нужны.Просто зайдите в каталог db/migrate/ и удалите миграции, которые старше, скажем, пары месяцев.

Пока все миграции, которые вы хотите удалить, были применены повсеместно (т.е. разработка и производство)тогда они вам больше не нужны (если вы не хотите вернуться назад).На самом деле, миграция не предназначена для того, чтобы быть постоянными файлами, она просто для того, чтобы доставить вас от А до Б, а затем они просто багаж.

3 голосов
/ 20 августа 2014

Учитывая, что ни один из ответов не упоминает об этом, это драгоценный камень, который делает работу: https://github.com/jalkoby/squasher

Он в основном перезапускает миграции с нуля до указанной вами даты, а затем загружает полученный db/schema.rb в начальную миграцию, которая заменяет старые. Он также может очистить таблицу schema_migrations, чтобы вы не получили эти

up     <timestamp>  ********** NO FILE **********

записей при запуске rake db:migrate:status.

3 голосов
/ 26 июля 2011

Один из способов - взять пустую базу данных и выполнить все миграции.Теперь у вас есть все данные шаблона, которые вы можете сохранить в yaml.Yaml плюс схема должны быть достаточны для возврата БД без выполнения каких-либо ранее существующих миграций.

Однако в других ответах следует упомянуть существующий инструмент или гем для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...