Objetos Singleton em Ruby

Estou farto de reinventar objetos singleton o tempo todo em Ruby;

module MyObject
def self.call
puts
"I am a singleton object
end

end

Tudo bem, mas não quero ter que me chamar o tempo todo
e quero poder adicionar privatemétodos.

Com um pouco de magia;

def singleton(&block)
mod
= Module.new
mod
.singleton_class.module_eval(&block)
mod

end

Agora posso definir um objeto singleton com uma intenção clara

MyObject = singleton do
def call
puts
"I am a singleton object"
end
end

Depois é só ligar quando eu precisar!

MyObject.()
# I am a singleton object