つまり、問題の移行を実行する前に、 self.downが実際にself.up をロールバックすることを確認するための最良の方法を知りたいのです。
移行をロールバックする必要があるが、 self.downが目的を果たさない場合は、どうすればよいですか?
破壊的な可能性のある移行を処理する場合のベストプラクティスはどれですか?データベースのバックアップだけですか?
ありがとう、ドゥッチョ。
つまり、問題の移行を実行する前に、 self.downが実際にself.up をロールバックすることを確認するための最良の方法を知りたいのです。
移行をロールバックする必要があるが、 self.downが目的を果たさない場合は、どうすればよいですか?
破壊的な可能性のある移行を処理する場合のベストプラクティスはどれですか?データベースのバックアップだけですか?
ありがとう、ドゥッチョ。
ライブデータを含まない開発データベースで開発する必要があります。したがって、データを簡単に再生成できるため、データが破棄されても問題ありませんか?
開発データが重要であるが理想的ではない状況に陥った場合は、データベースのバックアップが適切な場合があります。
通常、移行にはスキーマの変更のみが含まれている必要があります。その場合、開発/テスト環境で移行を実行するのは非常に安全で簡単なはずです。問題が発生した場合は、いつでもデータベースを再作成して、テストデータを入力できます。ただし、テストするデータ関連の移行がある場合は、実際に本番環境で実行すると問題が発生する可能性があります。
その場合、あなたが言ったように、データベースのバックアップはあなたが頼るべきものです。展開する前に、適切で迅速な復元メカニズムが付属しています。
移行が希望どおりに動作することを確認するには、開発環境で実験する必要があります。
コマンドを実行します
rake -T
次のような利用可能なタスクを表示します
rake db:migrate
また
rake db:rollback
各移行はトランザクション内で実行されます。心に留めておきます。つまり、1回の移行で問題が発生した場合、移行はロールバックされます(後続の移行がある場合は、実行されません)。
移行をテストするには、それでも、多くのputsステートメントを挿入してup
、down
すべてが機能していることを確認し、最後の行で例外を発生させます。これにより、レールは移行が失敗したと見なし、操作をロールバックします(発生しなかったかのように)。
すべてが正常に機能することを確認したら、レイズラインを削除して、移行を実際に機能させます。あなたの場合、あなたはレイズでテストし、レイズを削除し、それを再び実行しないでしょう:)
お役に立てれば。