2012-03-16 5 views
2

私は数ヶ月間Herokuアプリケーションを開発してきました。最近、ステージングサーバーを設定しました。時にはsync the staging db with the production dbを設定しました。使用中の三つの主要なコマンドは、次のとおりです。Herokuと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 

問題は、3番目のコマンドを実行した後、私はheroku run rake db:migrate --app myapp-stagingを実行する必要があるということです。私たちは数十のマイグレーションを行っています。ここには、削除または名前を変更したRubyクラスを参照するものも含まれています。

これにより、移行が完全に実行されなくなります。ここでの解決策は何ですか?失敗した古い移行を削除し、これらの変更をgit repoにコミットする必要がありますか?

+0

この記事を参照してください。.. pgbackupsの一環として、今転送コマンドをチェックアウトすることができます - あなたがしたら、コードとデータが同じである必要がありますこれを行った。 –

+0

@NeilMiddleton私の質問が更新されました - 私はpg:resetコマンドがスキーマをリセットするものだと思います。私たちは、デザイナーが実行できるレーキ・タスクにこのプロセスを合理化しようとしています。すべての移行がステージングとプロダクションに同時にプッシュされていると仮定していないため、2番目のコマンドが必要です。ステージングで移行をテストしたり、ステージングに先立って生産に突入する可能性があります。 –

答えて

0

このスクリプトを再実行するとエラーが修正されたため、スキーマをコピーするだけのようです。私のように失敗したマイグレーションを見る人は、おそらくpgbackups:restoreコマンドが失敗したので、再実行してください。

+0

私はこの質問を投稿する前にスクリプトを再実行しようとしましたが、私の目を引っ張ったエラーはありませんでした。 –

関連する問題