実際に質問を定式化するのは難しいので、状況を説明するだけです。
複数のサブアプリケーションで構成されるアプリケーションに取り組んでいます。メイン アプリは、ナビゲーション バーと、ユーザーや権限の構成などのいくつかの基本的な機能を提供するだけであり、サブ アプリケーションは実際の機能を提供します。
これはRails 2アプリケーションで、サブアプリケーションはフレームに埋め込まれています。これはあまり良いデザインではなく、セットアップがかなり複雑です。幸いなことに、現在エンジンがあり、それがこのアプリケーションのより健全なソリューションになります。
これまではすべてが subversion にあり、一度に更新できました。共有コードは外部を使用します。再構築とリファクタリングを行っている間に、git に移行したいと考えています。ここ数日、バンドラー、git サブモジュール、および git サブツリーについて Web を検索してきましたが、複数のエンジン/ジェムで構成される大規模なプロジェクトを、それらすべてで開発しているときに適切に管理する方法についての適切な説明が見つかりませんでした。同時に。
特に、次のことができるようになりたいです。
- Bundler を使用して依存関係を管理する
- 独自の Gem とエンジンをグローバル gem パスにインストールするのではなく、git リポジトリとしてメイン アプリに相対的にインストールする
- 独自の Gem と Engine を git リポジトリとしてセットアップする (おそらく Bundler のローカル パス オーバーライドを使用)
- 独自の Gem とエンジンの最新バージョンをプルするすべての依存関係 (バンドル インストール) を取得する簡単な方法。それが不可能な場合は、すべての独自の Gem とエンジンを git pull する 1 つのコマンド (おそらく rake タスク?)
- 新しい開発者が開発環境全体をすばやく簡単にセットアップできるようにします (アプリを git clone し、すべての独自の Gem とエンジンを含む依存関係をローカルにバンドルします)。
- カピストラーノで簡単にデプロイ
私がすでに考えたこと:
- すべてを 1 つのリポジトリに含めることは、個別の Gem/エンジンの目的を無効にしているように思えます。また、Bundler を介してエンジン上のメイン アプリの依存関係を管理することもできないと思います。
- サブモジュールを使用して、なぜそれが悪いのかについてあまりにも多くの投稿を読みました。私たちの開発者の数では、誰かがサブモジュール ポインターを自分のローカル リポジトリにのみ存在するコミットにコミットするのは時間の問題です。
- git subtree ユーティリティ、私にはかなり複雑に思えます
では、似たような設定をしている方はいますか?更新と変更のコミットをできるだけ簡単にするために、どのように管理していますか? アプリケーションが依存する Engine/Gem コードをどこに置きますか?
TL;DR複数の Engine と Gem で構成される大規模な Rails プロジェクトを管理するにはどうすればよいですか?