Untuk menghindari pembusukan link, postingan blog Chris Wanstrath yang ditautkan oleh user83510 di-posting ulang di bawah ini (dengan izinnya). Tetap saja, tidak ada yang mengalahkan yang asli, jadi gunakan tautannya selama itu terus berfungsi.
→ bernyanyi lajang 18 November 2008 Ada hal-hal yang tidak saya mengerti. David Bowie, misalnya. Atau Belahan Bumi Selatan. Tapi tidak ada yang cukup mengejutkan saya seperti Ruby Singleton. Karena sungguh, itu sama sekali tidak perlu.
Inilah yang mereka ingin Anda lakukan dengan kode Anda:
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'
Tapi itu gila. Lawan kekuatan.
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'
Ada kenapa tidak? API lebih ringkas, kodenya lebih mudah untuk diuji, dibuat-buat, dan bertopik, dan masih sangat mudah untuk diubah menjadi kelas yang tepat jika diperlukan.
((hak cipta seharusnya sepuluh chris wanstrath))