2012-03-16 2 views
2

Я работаю над приложением 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?

+0

Почему вам нужно запустить миграцию - код и данные должны быть такими же, как только вы сделал это. –

+0

@NeilMiddleton Я обновил свой вопрос - я считаю, что команда pg: reset - это то, что сбрасывает схему. Мы пытаемся оптимизировать этот процесс в задачу грабли, которую могут выполнять наши дизайнеры. Вторая команда необходима, потому что мы не предполагаем, что все миграции переносятся на стадии постановки и производства и запускаются одновременно - возможно, мы можем протестировать миграцию при постановке или кто-то может нажать на производство, не нажав сначала на этап. –

ответ

0

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

+0

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

Смежные вопросы