コードは次のとおりです。
module A
class C1
def self.grovel(x)
return A::helper(x) + 3
end
end
class C2
def self.grovel(x)
return A::helper(x) + 12
end
end
private
def helper(y)
y + 7
end
module_function :helper
end
f = A::C1.grovel(7)
puts f
puts A::C2.grovel(25)
あまり変更しないように、レガシー コードを使用しています。各クラスには共通のコードを持つメソッドが 1 つしか含まれていないため、同じメソッドで 2 つの別個のクラスを作成したかどうかはわかりません。A のメソッドのみが参照できるメソッドに共通コードを抽出したいのですが、完全修飾名 ("A::helper") で呼び出す必要があります。
これを行うより良い方法はありますか?理想的には、修飾なしでクラス grovel メソッド内から呼び出すことができるメソッド (「ヘルパー」と呼びましょう) で共通コードをラップしたいと思いますが、モジュール A の外部のコードでは簡単に利用できません。
ありがとう。