Допустим, у меня есть приложение с кучей файлов миграции, которые я готов развернуть в рабочей среде в первый раз. Насколько я понимаю, у меня есть два варианта поднять базу данных на рабочем сервере:
- A — Запустите
db:migrate
и запустите цикл всех миграций, которые он еще не выполнил. - B - Запустите
db:schema:load
и создайте базу данных из файла схемы.
Я знаю, что B — правильный выбор для новых развертываний, как объясняется в комментариях schema.rb
:
# If you need to create the application database on another
# system, you should be using db:schema:load, not running all the migrations
# from scratch. The latter is a flawed and unsustainable approach (the more migrations
# you'll amass, the slower it'll run and the greater likelihood for issues).
Мне интересно, как это повлияет на миграцию на рабочем сервере в будущем? Например, если я делаю следующее по порядку:
- Запустите
db:schema:load
на новом рабочем сервере. - Измените мою схему в разработке и нажмите на производство.
- Запустите
db:migrate
на рабочем сервере
Что случится? Будет ли он знать, что нужно использовать только более поздние миграции, чем действие db:schema:load
, или попытается запустить их все?
schema:load
, что я никогда не проверял) - person Mike Szyndel   schedule 25.09.2013