После дальнейших обсуждений с rue: и drbrain: в ruby-lang выясняется, что мой импульс к экономии памяти путем размещения служебных функций на уровне класса был неуместен.
В Ruby методы экземпляра зависаютвне зависимости от класса, и ответ заключается в том, чтобы пойти дальше и поместить служебные функции на уровне экземпляра как частные.
Таким образом, вспомогательная функция, доступ к которой осуществляется только методами экземпляра:
class Foo
def what
"it is '#{zoop}'"
end
private
def zoop
"zoop"
end
end
p Foo.new.what # => "it is 'zoop'"
Для вспомогательной функции, которую необходимо вызывать из методов экземпляра и класса, вложенный модуль казался популярным подходом:
class Foo
module Util
def self.zoop
"zoop"
end
end
def what
"it is '#{Util.zoop}'"
end
class << self
def class_what
"for all time it is '#{Util.zoop}'"
end
end
end
p Foo.new.what # => "it is 'zoop'"
p Foo.class_what # => "for all time it is 'zoop'"
p Foo::Util.zoop # visible, alas