バックグラウンド:
いくつかのインスタンスメソッドを宣言するモジュールがあります
module UsefulThings
def get_file; ...
def delete_file; ...
def format_text(x); ...
end
そして、クラス内からこれらのメソッドのいくつかを呼び出したいと思います。Rubyでこれを通常行う方法は次のとおりです。
class UsefulWorker
include UsefulThings
def do_work
format_text("abc")
...
end
end
問題
include UsefulThings
からすべてのメソッドを取り込みますUsefulThings
。この場合、私は and だけが必要であり、明示的には必要ありformat_text
ません。get_file
delete_file
これに対するいくつかの可能な解決策を見ることができます:
- どういうわけか、どこにも含めずにモジュールで直接メソッドを呼び出します
- これがどのように/できるかわかりません。(したがって、この質問)
- どういうわけ
Usefulthings
か、そのメソッドの一部を含めてのみ持ち込む- また、これを行う方法/可能かどうかもわかりません
- プロキシ クラスを作成し、そのクラスに含めて、そのプロキシ インスタンス
UsefulThings
に委譲するformat_text
- これは機能しますが、匿名プロキシ クラスはハックです。うん。
- モジュールを 2 つ以上の小さなモジュールに分割する
- これも機能し、おそらく私が考えることができる最良の解決策ですが、何十ものモジュールが急増することになるため、避けたいと思います-これを管理するのは面倒です
1 つのモジュールに無関係な関数がたくさんあるのはなぜですか? それApplicationHelper
は Rails アプリからのものであり、私たちのチームは事実上、他の場所に属するほど具体的ではないもののゴミ捨て場として決定しました。ほとんどの場合、どこでも使用されるスタンドアロンのユーティリティ メソッドです。個別のヘルパーに分割することもできますが、30 個のヘルパーがあり、それぞれに 1 つのメソッドがあります... これは非生産的です。