Aby uniknąć gnicia linków, poniżej opublikowano ponownie post Chrisa Wanstratha, do którego prowadzi user83510 (za jego zgodą). Jednak nic nie przebije oryginału, więc używaj jego linku tak długo, jak będzie działać.
→ singin 'singletons 18 listopada 2008 Są rzeczy, których po prostu nie rozumiem. Na przykład David Bowie. Albo na półkuli południowej. Ale nic tak nie zadziwia mnie jak Singleton Ruby. Bo naprawdę, to zupełnie niepotrzebne.
Oto, co chcą, abyś zrobił ze swoim kodem:
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'
Ale to jest szalone. Walcz z mocą.
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'
Każdy, dlaczego nie? Interfejs API jest bardziej zwięzły, kod jest łatwiejszy do testowania, makiety i odgałęzienia, a konwersja na odpowiednią klasę w razie potrzeby jest nadal bardzo prosta.
((prawa autorskie powinny mieć ten Chris Wanstrath))