Skip to content

Instantly share code, notes, and snippets.

@SingularityMatrix
Last active August 29, 2015 14:20
Show Gist options
  • Save SingularityMatrix/0a1adc11c59c1b4c1ec7 to your computer and use it in GitHub Desktop.
Save SingularityMatrix/0a1adc11c59c1b4c1ec7 to your computer and use it in GitHub Desktop.
Reuse a User instance for a given accesscode
class User
def self.new(accesscode)
@cache ||= {}
@cache[accesscode] ||= super(accesscode)
end
def initialize(accesscode)
@accesscode = accesscode
end
end
# Ok. If User.new(:accesscode) is called with same value of accesscode as before,
# a cached Instance object is returned. Here's the demo -
=> #<User:0x007fb90c22e3a0 @accesscode=:level2>
>> User.new(:level3)
=> #<User:0x007fb90c226dd0 @accesscode=:level3>
>> User.new(:level4)
=> #<User:0x007fb90c21f328 @accesscode=:level4>
>> User.new(:level2)
=> #<User:0x007fb90c22e3a0 @accesscode=:level2>
>> User.new(:level3)
=> #<User:0x007fb90c226dd0 @accesscode=:level3>
>> User.new(:level4)
=> #<User:0x007fb90c21f328 @accesscode=:level4>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment