Objetos Singleton en Ruby

Estoy aburrido de reinventar objetos singleton todo el tiempo en Ruby;

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

end

Eso está bien, pero no quiero tener que llamarme a sí mismo todo el tiempo
y quiero poder agregar privatemétodos.

Con un poco de magia;

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

end

Ahora puedo definir un objeto singleton con una clara intención

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

¡Entonces llámalo cuando lo necesite!

MyObject.()
# I am a singleton object