Объединение файлов базы данных / миграции

#ruby-on-rails #ruby-on-rails-3

#ruby-on-rails #ruby-on-rails-3

Вопрос:

Есть ли хороший способ объединить файлы миграции rails db в 1 файл на таблицу, помимо разделения schema.rb вручную?

Большая часть моего файла миграции была создана во время разработки и не отражает реальных изменений данных. По историческим причинам эти файлы будут по-прежнему доступны в системе управления версиями. Мне неудобно хранить эти ненужные файлы.

Ответ №1:

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

В принципе, что вы можете сделать, это.

СНАЧАЛА СОЗДАЙТЕ резервную копию вашей схемы и данных.

Db /schema.rb содержит (или должен содержать) последнюю версию вашей схемы. В противном случае запустите:

 rake db:schema:dump
  

Теперь вы можете очистить свою папку миграции.

Затем запустите:

 rake db:drop
rake db:schema:load
  

Последняя команда запускает db/schema.rb и создает новую схему. Это должно привести вас к последней версии вашей базы данных.

показать задачу БД

rake -T db

Комментарии:

1. рейк говорит «Не знаю, как создать задачу ‘schema: drop'». Я использую ruby 1.9.3 и rails 3.2.9

Ответ №2:

Вы можете использовать драгоценный камень Squasher, чтобы объединить все старые миграции в одну.

Ответ №3:

Не беспокойтесь. Старые файлы миграции не наносят никакого вреда, и они могут упростить обслуживание. Оставьте их такими, какие они есть.

Комментарии:

1. Они действительно упрощают обслуживание, только если миграции представляют реальные изменения данных, а это не так.

2. Файлы миграции должны представлять изменения схемы , а не изменения данных как таковые. Можете ли вы опубликовать пример миграции, от которого вы хотели бы избавиться?

3. Удаление многочисленных столбцов как не относящихся к делу, избавление от ненужных индексов, переименований столбцов и тому подобного.

4. Да, это изменения схемы. Оставьте их.

5. Я работал над проектом, в котором были сотни миграций. Стало обременительным для новых разработчиков. Было удобно объединить годы истории в разумную отправную точку