diff options
author | Rafael França <rafaelmfranca@gmail.com> | 2016-11-04 16:35:46 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-11-04 16:35:46 -0400 |
commit | bca0ae6f1979dbec0e2dbf51d8421c6f4781e10e (patch) | |
tree | 22c33c1f3de033bdc317242514e2317aba736f2f /lib/rack/session/abstract/id.rb | |
parent | 7dd7646a932419f4d308bf2fbc91f4e77edfd4cb (diff) | |
parent | 91cc7a456f2a354d371b44dc14703f3304f42b29 (diff) | |
download | rack-bca0ae6f1979dbec0e2dbf51d8421c6f4781e10e.tar.gz |
Merge pull request #1125 from yannvanhalewyn/improve-fetch-on-session-hash
Improve and test SessionHash#fetch
Diffstat (limited to 'lib/rack/session/abstract/id.rb')
-rw-r--r-- | lib/rack/session/abstract/id.rb | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/lib/rack/session/abstract/id.rb b/lib/rack/session/abstract/id.rb index 4c139637..ca1a2628 100644 --- a/lib/rack/session/abstract/id.rb +++ b/lib/rack/session/abstract/id.rb @@ -18,6 +18,8 @@ module Rack include Enumerable attr_writer :id + Unspecified = Object.new + def self.find(req) req.get_header RACK_SESSION end @@ -54,7 +56,15 @@ module Rack load_for_read! @data[key.to_s] end - alias :fetch :[] + + def fetch(key, default=Unspecified, &block) + load_for_read! + if default == Unspecified + @data.fetch(key.to_s, &block) + else + @data.fetch(key.to_s, default, &block) + end + end def has_key?(key) load_for_read! |