Para evitar que el enlace se pudra, la publicación del blog de Chris Wanstrath vinculada por user83510 se vuelve a publicar a continuación (con su permiso). Aún así, nada supera a un original, así que use su enlace mientras siga funcionando.
→ singin 'singletons 18 de noviembre de 2008 Hay cosas que simplemente no entiendo. David Bowie, por ejemplo. O el hemisferio sur. Pero nada me aturde tanto como Ruby's Singleton. Porque en realidad es totalmente innecesario.
Esto es lo que quieren que hagas con tu 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'
Pero eso es una locura. Luchar contra el 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'
Cualquiera, ¿por qué no? La API es más concisa, el código es más fácil de probar, simular y apuntar, y todavía es muy simple de convertir en una clase adecuada si surge la necesidad.
((el derecho de autor debe diez chris wanstrath))