Để tránh bị thối liên kết, bài đăng trên blog của Chris Wanstrath được liên kết bởi user83510 được đăng lại bên dưới (với sự cho phép của anh ấy). Tuy nhiên, không có gì đánh bại được bản gốc, vì vậy hãy sử dụng liên kết của anh ấy miễn là nó tiếp tục hoạt động.
→ singin 'singletons 18 Tháng Mười Một 2008 Có điều tôi không hiểu. David Bowie chẳng hạn. Hoặc Nam bán cầu. Nhưng không có gì làm tôi rối trí như Singleton của Ruby. Bởi vì thực sự, nó hoàn toàn không cần thiết.
Đây là những gì họ muốn bạn làm với mã của bạn:
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'
Nhưng điều đó thật điên rồ. Chiến đấu chống lại quyền lực.
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'
Bất kỳ tại sao không? API ngắn gọn hơn, mã dễ kiểm tra, mô phỏng và sơ khai hơn, và việc chuyển đổi thành một lớp thích hợp vẫn rất đơn giản nếu có nhu cầu.
((bản quyền phải là mười chris wanstrath))