いくつかの(古い)Drupalサイトがあり、1つの新しいRailsアプリに置き換える必要があります。その新しいサイトには、すべての古いDrupalコンテンツが含まれている必要があります。その古いDrupalコンテンツは部分的に壊れています(7年近くの醜いアップグレード、廃止されたモジュールなどのため)。Drupalであるという事実はほとんど関係がなく、いくつかの不整合、奇妙な命名、および不適切に正規化されたテーブルを引き起こすという事実だけです。
Railsアプリにインポートする必要のあるコンテンツは単純です。コンテンツ(ブログエントリ)、添付ファイル(画像)、コメントです。2つのデータベースが「古くなっている」(本番環境ではない)、さらに2つのデータベースが本番環境にあるという贅沢がありますが、しばらくの間(数時間、数日)ダウン/ロックされます。したがって、移行の速度を最適化する必要はなく、完全に保存する必要もありません(つまり、移行の実行中に投稿されたコメントを失う余裕があります)
Rails(3)アプリはほとんどが実行され、Active-recordの規則のみを使用します。
制約(壊れた、一貫性のないデータベース、マージが必要ないくつかのデータベース)のために、新しいRailsアプリを醜い、一貫性のないレガシーデータベースに接続するのではなく、このための移行を作成することを好みます。
私の質問は次のとおりです。
- Railsへのインポートを容易にする環境、gem、またはツールはありますか?たとえば、一部のDSLで新旧からの単純なマッピングを可能にするものはありますか。
- または、移行を完全にSQLで記述する方が簡単ですか?古いデータをRailsアプリに適合する構造に変換するSQLクエリですか?移行はMySQL->MySQLからです。
- または、Activerecordを古いデータベースに接続し、各行/結果をループしてObject.saveを実行する必要があります。私のRailsアプリで?