コードを再利用するために、Ruby アプリケーションからいくつかのコードを gem に抽出しようとしています。これを安全に行うために、仮想の「フェンス」を作成して、プロジェクト内の他のコードへの参照がないようにしたいと考えています。「フェンス」内の唯一のコードは、既存の gem と、gemify しようとしているコードである必要があります。
メソッド呼び出しロジックにフックし、その後各メソッド呼び出しをログに記録するマジック モンキー パッチを適用することで、これを行うことを考えています。
これが私が達成しようとしていることの視覚的表現です:
いくつかの仮定:
- gem化されるコードは、プロジェクト内のコード全体よりもはるかに小さい
- プロジェクト コードは変更できますが、製品レベルの品質である必要があります
ここで推奨されるソリューションを使用して、すでに調査しました。
Rubyでメソッド呼び出しをインターセプトするにはどうすればよいですか?
ただし、このソリューションは、受信側でメソッド呼び出しをインターセプトし、プロジェクト内のすべてのクラスでコードを拡張する必要もあります (gemify するクラスを除く)。
理想的には、せいぜいすべてのクラスを拡張してgem化したいと考えています。