Để 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))