Как предварительно заполнить базу данных при запуске приложения Phoenix?

У меня есть эта схема:

schema "editables" do
    field :title, :string 
    field :content, :binary
   timestamps
end

Мне бы хотелось, чтобы при запуске приложения несколько строк были автоматически созданы и заполнены, скажем, я хочу создать 6 записей с полем :title, содержащим: page1, page2,... Я должен это сделать?

Ответ 1

Мое предложение: создайте файл script, который будет заполнять базу данных. Назовем его priv/repo/seeds.exs:

alias MyApp.Repo
Repo.insert! %MyApp.Data{...}
Repo.insert! %MyApp.Data{...}

В разработке вы можете запустить его как

mix run priv/repo/seeds.exs

или когда вам нужно в производстве:

MIX_ENV=prod mix run priv/repo/seeds.exs

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