может какая-то толковая статья? кроме этой статьи https://dashbit.co/blog/automatic-and-manual-ecto-migrations ничего по этой теме не находиться
В миграции где создаёшь таблицу бери репу из миграции и с этой репой заполняй таблицу данными
использовать миграции для попюлейта данных это антипаттерн. самый верный вариант будет кастомный модуль или mix таска если надо запускать только локально (но в этом случае seeds самое оно). я проде можно будет вызвать через ./my_app eval "MyApp.PopulateCountries.run" после твоего скрипта миграции в СI с каким чеком или разово в консоле. в рельсах для таких задач была подбно миграции гемка data-migrate - которая работала как миграции - но только для данных. в элексире подобного не нашел.
А почему это антипаттерн?
так а в чем антипатерн? Какие проблемы это создает?
И этот подход, во-первых, создаёт сложности при автоматизации того же деплоя, а во-вторых, имеет те же проблемы, что и разделение дата-миграций и миграций схем.
да - но вы не блокируете последущие миграции для базы - что очень важно в активном проекте.
А зачем их не нужно блокировать? Если данные, которые должны быть в базе и нужны для работоспособности приложения, отсутствуют, то и само приложение становится неработоспособным. И тут уже неважно какие именно транзакции невыполнились: создающие таблицы, или заливающие данные
Из ваших слов я по крупинкам собрал то, что вы на самом деле говорите: Использовать миграции для заполнения базы большими дампами или данными не важными для корректной работы приложения не правильно. И я тут соглашусь, лучше сделать отдельную тасочку и использовать её Но вот использовать миграции для данных, которые обязательно нужны приложению, и отсутствие которых приводит к крэшу так же быстро, как и неправильная схема базы, это правильно
👍 да, спасибо за резюме. Просто много негативного опыта накопилось при активном девелопменте, когда ты вмержил мастер, а там кто-то down миграции не написал для данных, а тебе надо откатить свои. И начинаются пляски, в добавок ко всем выше описанным проблемам.
ну с down миграциями всегда боль, мы их вообще не используем из-за этого, если надо что-то откатить, то пишем новую миграцию для отката
Обсуждают сегодня