Чтобы избежать ссылки гниль, blog post of Chris Wanstrath, связавшись с пользователем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 более лаконичен, код легче тестировать, издеваться и заглушать, и все равно мертво просто преобразовать в правильный класс, если возникнет такая необходимость.
((авторские права должны быть десятью chris wanstrath))
Почему такой синглтон более эффективен? – xuuso