Кроме self.class.send :method, args...
, конечно. Я хотел бы сделать довольно сложный метод, доступный как на уровне класса, так и на уровне экземпляра без дублирования кода.
ОБНОВЛЕНИЕ:
@Jonathan Branam: это было мое предположение, но я хотел убедиться, что никто другой не нашел пути. Видимость в Ruby сильно отличается от видимости в Java. Вы также совершенно правы, что private
не работает над методами класса, хотя это объявит метод частного класса:
class Foo
class <<self
private
def bar
puts 'bar'
end
end
end
Foo.bar
# => NoMethodError: private method 'bar' called for Foo:Class