Що означає class << self в Ruby?

У Ruby вираз class << self використовується для визначення методів класу. Зазвичай це використовується в контексті внутрішньої області видимості (singleton class або eigenclass) для класу. Коли ви використовуєте class << self, ви переключаєтеся на роботу з самим класом, а не його екземплярами.

Розглянемо приклад:

class MyClass
  def self.my_class_method
    puts "This is a class method."
  end
end

У цьому випадку self.my_class_method є прикладом методу класу. Однак можна також використовувати class << self для визначення багатьох методів класу без повторення імені класу:

class MyClass
  class << self
    def method1
      puts "Method 1"
    end

    def method2
      puts "Method 2"
    end
  end
end

Цей синтаксис дозволяє вам групувати методи класу разом і зручно визначати їх, не вказуючи ім’я класу кожен раз.

PS У Ruby вираз, цей вираз з використанням ключового слова self, призначений для відкриття “singleton-класу” об’єкта.