aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib
diff options
context:
space:
mode:
authorGuillermo Iguaran <guilleiguaran@gmail.com>2013-10-29 12:59:40 -0700
committerGuillermo Iguaran <guilleiguaran@gmail.com>2013-10-29 12:59:40 -0700
commita5e2800221b29eb5b2a3f3b831e6bc8ce4e7d534 (patch)
tree446f7c51aab281ed8f6e2b8d6b5e2c191376236e /actionpack/lib
parent671af0716de6b8991b15e2d2cb56ed6c555cb343 (diff)
parent84c9f4164bbd5f3d2697949bdd2cdbd15ce6091e (diff)
downloadrails-a5e2800221b29eb5b2a3f3b831e6bc8ce4e7d534.tar.gz
rails-a5e2800221b29eb5b2a3f3b831e6bc8ce4e7d534.tar.bz2
rails-a5e2800221b29eb5b2a3f3b831e6bc8ce4e7d534.zip
Merge pull request #12692 from dmathieu/session_fetch
Add session#fetch
Diffstat (limited to 'actionpack/lib')
-rw-r--r--actionpack/lib/action_dispatch/request/session.rb12
1 files changed, 12 insertions, 0 deletions
diff --git a/actionpack/lib/action_dispatch/request/session.rb b/actionpack/lib/action_dispatch/request/session.rb
index 7bc812fd22..6d911a75f1 100644
--- a/actionpack/lib/action_dispatch/request/session.rb
+++ b/actionpack/lib/action_dispatch/request/session.rb
@@ -127,6 +127,18 @@ module ActionDispatch
@delegate.delete key.to_s
end
+ def fetch(key, default=nil)
+ if self.key?(key)
+ self[key]
+ elsif default
+ self[key] = default
+ elsif block_given?
+ self[key] = yield(key)
+ else
+ raise KeyError
+ end
+ end
+
def inspect
if loaded?
super