class B

  class << self  # внутри этого блока можно вставить много синглтон методов для класса
    def single
      puts "single method"
    end
  end
# тоже самое
  def self.single1
    puts "single method"
  end
# тоже самое
  def B.single2
    puts "single method"
  end

end

А посмотреть синглтон классы можем вот так

 
puts B.singleton_class.instance_methods.grep /single/

 и вот тут я до сих пор не понял, почему B.singleton_class.methods отрабатывает по другому

instance_methods выводит методы экземпляра класса

methods выводит методы для объекта для которого его вызываем. 

ну а методы класса можно получить так puts (B.methods - B.instance_methods)