Here's the code:
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)
I'm working with legacy code, trying to avoid changing too much. I'm not sure I would have made two separate classes with the same method, as each class only contains one method, with common code. I want to extract the common code into a method that only the methods in A can see, but still have to invoke it with its fully qualified name ("A::helper").
Is there a better way of doing this? Ideally, I'd like to wrap the common code in a method (let's still call it "helper") that can be invoked from within the class grovel methods without any qualification, but isn't easily available to code outside module A.
Thanks.