次のプロジェクトでRubyonRailsを使用することを検討しています。Rails Webサイトの展開を理解するのは簡単です(Phusion Passengerを使用するように聞こえます)
しかし今、私はデータベースを理解しようとしています。「データベースの移行」について多くのことを目にします。これにより、rubyコードを使用してデータベースを更新できます。また、これらの移行のアップバリアントとダウンバリアントの両方を作成できることもわかりました。
しかし、私はこれが一方向でどのようにきれいに機能するかを理解することしかできません。突然「カラー列をnullにすることはできません」と言った場合を想像してみてください。したがって、upはそれを必須にし、すべてのNULLエントリにデフォルト値を与えます。しかし、ダウンは何をしますか?開始時と同じであることに関心がある場合は、デフォルト値をNULLに戻すことはできません。
これは、本番環境へのリリースではそれほど重要ではありません。それはおそらく一方向(上方向)で行われるでしょう。ただし、コードレビューと、チェックインを許可する前にビルドを実行するボットを設定するためにGerritを使用したいと思います...
では、それはどのように機能するのでしょうか?あるコードレビューから次のコードレビューまで、ビルドサーバーは新しいコードセットをチェックアウトし、移行を実行しますか?しかし、これが発生すると、以前の移行コードも保持されないため、ダウンステップをどのように実行できますか?より簡単な例として、古いバージョンのコードをチェックアウトして「dbmigrate」を逆方向に実行する方法がわかりません。