Para evitar o apodrecimento do link, a postagem do blog de Chris Wanstrath com o link do usuário 83510 é postada novamente abaixo (com sua permissão). Ainda assim, nada supera um original, então use seu link enquanto ele continuar funcionando.
→ singletons cantando 18 de novembro de 2008 Há coisas que eu simplesmente não entendo. David Bowie, por exemplo. Ou o hemisfério sul. Mas nada confunde minha mente como o Singleton de Ruby. Porque realmente, é totalmente desnecessário.
Aqui está o que eles querem que você faça com seu código:
require 'net/http'
# first you setup your singleton
class Cheat
include Singleton
def initialize
@host = 'http://cheat.errtheblog.com/'
@http = Net::HTTP.start(URI.parse(@host).host)
end
def sheet(name)
@http.get("/s/#{name}").body
end
end
# then you use it
Cheat.instance.sheet 'migrations'
Cheat.instance.sheet 'yahoo_ceo'
Mas isso é loucura. Combate o Poder.
require 'net/http'
# here's how we roll
module Cheat
extend self
def host
@host ||= 'http://cheat.errtheblog.com/'
end
def http
@http ||= Net::HTTP.start(URI.parse(host).host)
end
def sheet(name)
http.get("/s/#{name}").body
end
end
# then you use it
Cheat.sheet 'migrations'
Cheat.sheet 'singletons'
Qualquer por que não? A API é mais concisa, o código é mais fácil de testar, simular e stub, e ainda é muito simples de converter em uma classe adequada, caso haja necessidade.
((copyright ought ten chris wanstrath))