Techioz Blog

サブプロジェクトに分割された大規模な Ruby プロジェクトのバージョン管理の処理

概要

TL;DR - 大規模なプロジェクトには多くのプラグインがあり、自動テストが頻繁に失敗する原因になります。このプロジェクトをコア リポジトリと拡張リポジトリに分割したいのですが、どうすればよいでしょうか?

私には、それぞれ独自の依存関係を持つ多数のプラグインを含む大規模なプロジェクト (nanoc) があります。例えば:

これらのプラグインの多くは時々失敗します。

nanoc (Travis) によって使用される継続的統合サービスは、非常に頻繁にエラーを報告します。これらのエラーの 95% はプラグインが原因です。

このため、継続的統合テストの結果は多少役に立たなくなります。私は「エラー」ビルド ステータスを無視し、プラグインで何か問題が発生したとだけ考えるようになりました。これは明らかに良い状況ではありません。

プロジェクトを 2 つの部分に分割したいと思います。

私はほとんどの時間コアで作業し、コアで行われた作業と一致するように時々プラグイン リポジトリを更新しました (ただし、通常、コアでの変更はプラグインに影響しません)。

これは合理的なアプローチのように思えますが、いくつかの懸念があります。

考えやアイデアは大歓迎です。

解決策

プラグインとメインアプリの関係によって異なります。

プラグインがこのアプリでのみ使用でき、強い結合がある場合は、プラグインをプラグイン パスに配置し、メイン アプリ リポジトリに追加する必要があります。

プラグインがより汎用的な目的で使用でき、結合が少ない場合、より良いアプローチは、これらのプラグインを次のように gemify することです。