Рефакторинг миграции БД в Ruby on Rails - PullRequest
3 голосов
/ 18 сентября 2009

Когда проект растет, число миграций начинает становиться довольно высоким, и, оглядываясь назад, я вижу много миграций, которые можно реорганизовать. Как слияние create_posts и rename_posts_to_responses в create_responses.

Это вредный привычка или я должен поощрять рефакторинг миграций?

Ответы [ 4 ]

5 голосов
/ 18 сентября 2009

Вы могли бы, но позже в проекте вы не должны на самом деле запускать миграции полностью, вы должны schema:load работать, то есть, если вам нужно запустить совершенно новый экземпляр проект. По моему опыту, вы будете причинять себе больше головной боли, чем что-либо еще.

Выполнить schema:load немного сложно, хотя, если вы включили данные в свои миграции (что происходит с лучшими из нас).

4 голосов
/ 20 сентября 2009

После того, как вы отметите миграцию в систему управления версиями, я бы рекомендовал не изменять их. Я делаю редкое исключение, если в нем есть ошибка, но это довольно редко (возможно, 1 из 100).

Причина в том, что когда они выходят в дикую природу, некоторые люди могут ими управлять. Они записаны как завершенные в БД. Если вы измените их и зарегистрируете новую версию, другие люди не получат выгоду от изменения. Вы можете попросить людей откатить некоторые изменения и повторно запустить их, но это не отвечает цели автоматизации. Сделано часто, это становится беспорядком. Лучше оставить в покое.

Когда вы получаете большое количество миграций, оно может начать чувствовать себя неловко. В общем, тем не менее, вы не будете так много управлять. Единственное место, где мы это делаем, - это наш сервер интеграции, который отбрасывает и воссоздает базу данных при каждом запуске. Так что вы можете просто не открывать этот каталог и делать вид, что его там нет.

Существует практика консолидации миграций. Для этого просто скопируйте текущую схему в миграцию и удалите все предыдущие миграции. Тогда у вас будет меньше файлов для управления, и тесты могут выполняться быстрее. Вы должны быть осторожны, особенно если у вас автоматически выполняются миграции в рабочей среде. Обычно я заменяю миграцию, которая, как я знаю, у всех запущена, новой схемой. У других людей есть немного другие способы сделать это.

1 голос
/ 19 сентября 2009

, по моему мнению, это хорошо для рефакторинга во время разработки [хотя я бы не одобрял это, особенно когда работаю в команде], но слишком легко испортить приложения в работе путем рефакторинга миграций

0 голосов
/ 19 сентября 2009

Я видел большие проекты, где все миграции заменяются одной миграцией, взятой из schema.rb. Это еще одна причина не использовать миграцию данных, а вместо этого поддерживать набор начальных данных.

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