Вот фрагмент кода, чтобы ответить на вопрос. Использование «частного» в определении класса не относится к методам класса. Вам нужно использовать "private_class_method", как в следующем примере.
class Foo
def self.private_bar
# Complex logic goes here
puts "hi"
end
private_class_method :private_bar
class <<self
private
def another_private_bar
puts "bar"
end
end
public
def instance_bar
self.class.private_bar
end
def instance_bar2
self.class.another_private_bar
end
end
f=Foo.new
f=instance_bar # NoMethodError: private method `private_bar' called for Foo:Class
f=instance_bar2 # NoMethodError: private method `another_private_bar' called for Foo:Class
Я не вижу способа обойти это. В документации сказано, что вы не можете указать получение частного метода. Также вы можете получить доступ только к приватному методу из того же экземпляра. Класс Foo является объектом, отличным от данного экземпляра Foo.
Не воспринимайте мой ответ как окончательный. Я, конечно, не эксперт, но я хотел предоставить фрагмент кода, чтобы у других, кто попытается ответить, были методы частного класса.