Я работаю над приложением Heroku в течение нескольких месяцев. Недавно мы создали промежуточный сервер, а иногда - sync the staging db with the production db. Три основные команды в использовании являются:Heroku and Rails: перенос db на этап и db: migrate
$ heroku pgbackups:capture --app myapp
$ heroku pg:reset DATABASE --app myapp-staging --confirm myapp-staging"
$ heroku pgbackups:restore DATABASE `heroku pgbackups:url --app myapp` --app myapp-staging
Проблема заключается в том, что после выполнения третьей команды, мне нужно запустить heroku run rake db:migrate --app myapp-staging
. Сейчас у нас есть несколько десятков миграций, в том числе некоторые, относящиеся к классам Ruby, которые мы удалили или переименовали.
Это приводит к тому, что миграции не могут полностью работать. Какое решение здесь? Должен ли я удалить старые миграции, которые не выполняются, и зафиксировать эти изменения в git repo?
Почему вам нужно запустить миграцию - код и данные должны быть такими же, как только вы сделал это. –
@NeilMiddleton Я обновил свой вопрос - я считаю, что команда pg: reset - это то, что сбрасывает схему. Мы пытаемся оптимизировать этот процесс в задачу грабли, которую могут выполнять наши дизайнеры. Вторая команда необходима, потому что мы не предполагаем, что все миграции переносятся на стадии постановки и производства и запускаются одновременно - возможно, мы можем протестировать миграцию при постановке или кто-то может нажать на производство, не нажав сначала на этап. –