लिंक रोट से बचने के लिए, उपयोगकर्ता के द्वारा पोस्ट की गई क्रिस वानस्ट्रथ की ब्लॉग पोस्ट को नीचे पोस्ट किया गया है (उसकी अनुमति से)। फिर भी, कुछ भी एक मूल धड़कता नहीं है, इसलिए जब तक यह काम करना जारी रखता है, तब तक उसके लिंक का उपयोग करें।
→ सिंगिन के सिंगलेट्स 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'
कोई भी क्यों नहीं? एपीआई अधिक संक्षिप्त है, कोड का परीक्षण, मॉक और स्टब करना आसान है, और एक उचित वर्ग में परिवर्तित करने के लिए अभी भी मृत सरल है आवश्यकता उत्पन्न होनी चाहिए।
((कॉपीराइट दस क्रिस वानस्ट्रथ चाहिए))