Никто из пишущих на Ruby не задумывался, каким механизмом получаются у классов их методы? Ведь каждый класс в Ruby является объектом класса Class.
Почему у объекта Article один метод new, а у объекта Person совершенно другой метод new? Ведь они оба экземпляры одного и того же класса Class, у которого есть свои методы.
Дело в том, что в Ruby есть т.н. singleton методы. Это методы, которые определяются для конкретного экземпляра.
@a = Article.new def @a.funny_method puts “This method works for only one instance” endТак вот хитрость в том, что те самые статические методы класса есть не что иное, как singleton методы объекта Article, являющегося экземпляром класса Class.
Я до этого допер только во время написания драйвера, когда ковырялся с C-шным интерфейсом в руби.