В настоящее время я работаю с огромным приложением рельсов и несколькими ветвями с каждой новой функцией для этого приложения. Очень часто функция требует миграции, которая не должна быть проблемой, пока вы не объедините ее с хозяином: schema.rb обновлен с информацией о вашей базе данных разработчиков!schema.rb испорчен из-за миграции в других ветвях
Для уточнения:
1. Branch A has migration create_table_x
2. Branch B has migration create_table_y
3. Branch A adds another create_table_z and runs db:migrate
4. You want to merge Branch A with Master and you see table_x, table_y and table_z in the schema.rb of Branch A.
Это не вариант для сброса + заполнений базы данных перед каждой миграцией в отрасли или создать базу данных на каждый филиал. Из-за огромного размера данных объемом 2 ГБ SQL это было бы невозможно.
Мой вопрос:
ли это действительно необходимо, чтобы держать schema.rb в хранилище, так как он получает перестроен каждую миграцию?
Если да, возможно ли построить схему с миграций вместо дампа базы данных?
Я думаю, что вы должны хранить свой schema.rb в своем репозитории. Может случиться так, что кто-то очистит файлы миграции и удалит несколько неиспользуемых миграций из прошлого. И если у вас нет единой схемы schema.rb, я могу оказаться в беспорядке. файл схемы обновляется каждый переход, а не полностью перестраивается. но в любом случае интересный вопрос. – Mattherick
Да, проблема заключается в том, что она создается из текущей структуры базы данных, независимо от того, были ли добавлены таблицы в базе данных в родительском или ветке, в которой вы находитесь. То, что я имел в виду с «перестроенным». Я надеюсь, что кто-то знает более хороший способ, чем сбросить/скопировать базу данных с мастера каждый раз, когда вы переключаете ветвь с миграциями :) – Vikko
Возможный дубликат [Что является предпочтительным способом управления schema.rb в git?] (Http: // stackoverflow .com/questions/737854/what-is-the-preferred-way-to-manage-schema-rb-in-git) – Tachyons