#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. Я работал над проектом, в котором были сотни миграций. Стало обременительным для новых разработчиков. Было удобно объединить годы истории в разумную отправную точку