обрыв по таймауту в CI и половину данных прошли (создались/обновились) - а половину нет, при следующем запуске будет повторное выполнение. как быть с ролбеками?
тут больше добавления себе проблем, которые надо покрыть в подобных миграциях чтоб они безопасно проходили. таймауты и неожиданные эксепшены в CI проде - это риал кейсы из личного опыта.
ИМХО ну и вообще лучше отделять "сущности" - как миграции базы данных (таблиц) и данных к этим таблицам. хотя тот же DHH не видит ничего плохо в этом чтоб миксовать такие миграции.
транзакции вроде как решают эту проблему
Дубликацию данных можно избежать используея апсерт. А таймауты в CI нужно увеличивать, в природе не существует никакий требований к быстрому CI. А то, что половина данных создались, а вторая половина нет, это как раз проблемы кастомной таски, а не миграции, потому что миграция обёрнута в цепочку транзакций, которую очень легко контроллировать
Бытует мнение, что роллбеки нужны только тогда, когда ты тестишь миграции у себя на локале. Максимум - на стейдже. А в проде роллбеки не нужны.
Обсуждают сегодня