すべてをスタンドアロンの gem/Rails Engine としてパッケージ化することを検討します。
必要なすべてのカスタム SQL 移行 (ビュー、関数、ストアド プロシージャなどを作成するためのコード) を配置することが/db/migrations/sql
でき、カスタム Rake タスクを記述してこれらの移行を実行することができます。
その後、あらゆる種類のテスト/仕様を記述して、データベース固有のビュー、関数、ストアド プロシージャなどを実行できます。
この gem には独自のソース リポジトリがあり、メイン アプリとは独立した独自のライフ/リリース サイクルを持つことができます。これは、Ruby の専門家 (gem、spec、ライブラリー) と SQL の専門家 (当然) のペアによって維持される可能性があります。
このライブラリ/API が適切に作成されている場合、メイン アプリケーションを低レベルのデータベース固有のコードから抽象化するという追加の利点が得られます。つまり、アプリケーション開発者は、Widget.complex_sql_query
戻り値を呼び出して処理することだけを気にするだけでよく、メンテナンスを気にする必要はありません。逆に、データベース バックエンド チームは、コードがどのように使用されるかについてそれほど心配する必要はありません。ただし、両方のチームが API 契約に同意し、テスト カバレッジが全体的に良好である限りはそうです。
これはメイン アプリに統合されたすべてのコードで実行できますが、すべてを個別の gem として使用すると、物理的および心理的な障壁が課せられ、両方のチームがそれぞれの責任領域により簡単に集中できるようになります。