0

本番環境で機能やバージョンを段階的に展開することに、人々はどのように対処しているのでしょうか。このシナリオでは、テスト済みのコードの 2 つのバージョンが既に運用されており、もう 1 つはロールアウトされる予定です。これらは一般的な問題です。

  • 同じ Rails アプリ内の異なるバージョンのコード。
  • ユーザーへのロールアウト中の異なるバージョンの Rails アプリ。
  • バージョン間で異なるデータベース構造
  • 新しいデータベースとサーバー間でデータを移動します。

ここに議論のための上記のいくつかのアイデアがあります

  • M、V、C 名に定数、バージョン番号を含む if ステートメント
  • 異なるアプリ サーバーへの負荷分散 (スティッキーの作成方法)、RVM
  • テーブルに古いフィールドと新しいフィールドを一時的に保持するか、レコードを新しいテーブルまたは
    データベースに移行します。
  • サーバー間でデータを移動する簡単な方法はありません。
4

1 に答える 1

0

適切な分岐およびマージ戦略が必要なようです。Git や SVN などを使用している場合、マスターまたはトランクにあるものはそれぞれ、本番環境で使用できる品質である必要があります。AbcControllerが良好で準備ができているが不安定な状況にXyzController遭遇した場合、 はXyzControllerおそらくさらにテストが必要であり、まだマスターにすべきではありません。

レールでの移行もこのポリシーに従い、データ構造につながります。運用の準備ができていると思われる場合は、データベースに大きな変更を加える必要はありません。列や機能を追加する必要があるかもしれませんが、大規模なデータベースのリファクタリングは十分に過ぎているはずです。

最後に、データのアップロード/更新は、どの移行状況でも苦痛です。私の経験では、移動を実行したり、新しい機能のためにデータベースを更新したりするための SQL スクリプトを作成する必要があります。これらの SQL スクリプトもソース管理下にある必要があります。Rails では、移行ファイル自体に移行スクリプトを記述することで、これを簡単に行うことができます。正確な状況に応じて、これは機能します。

于 2011-05-19T10:10:51.957 に答える