Щоб уникнути гниття посилань, повідомлення про блог Кріса Ванстрата, пов’язане користувачем83510, розміщено нижче (з його дозволу). І все-таки ніщо не перевершує оригінал, тому використовуйте його посилання так довго, поки воно продовжує працювати.
→ співати синглтон 18 листопада 2008 р. Є речі, які я просто не розумію. Наприклад, Девід Боуї. Або Південна півкуля. Але ніщо не кидає мою думку, як Рубін Сінглтон. Бо справді це абсолютно непотрібно.
Ось що вони хочуть, щоб ви зробили свій код:
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'
Але це божевільно. Боріться за владу.
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'
Чому б і ні? API більш стислий, код простіший для тестування, макетування та заглушки, і його все ще просто просто перетворити в належний клас, якщо виникне потреба.
((авторські права повинні десять крис wanstrath))