aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack
diff options
context:
space:
mode:
authorMark Turner <mark@amerine.net>2012-05-02 11:14:40 -0700
committerMark Turner <mark@amerine.net>2012-05-02 11:22:34 -0700
commit61ba0fe82c440d244d70afc9aad5c8ea9d6e810d (patch)
tree6978bab90e7eebe138f0ac93ca2d7a2a45e467d1 /actionpack
parent6a4541d63e65b1de99bc20c9d260ac13c02fa581 (diff)
downloadrails-61ba0fe82c440d244d70afc9aad5c8ea9d6e810d.tar.gz
rails-61ba0fe82c440d244d70afc9aad5c8ea9d6e810d.tar.bz2
rails-61ba0fe82c440d244d70afc9aad5c8ea9d6e810d.zip
Enable ActionDispatch::Http::Headers to support fetch
Diffstat (limited to 'actionpack')
-rw-r--r--actionpack/lib/action_dispatch/http/headers.rb15
-rw-r--r--actionpack/test/dispatch/header_test.rb5
2 files changed, 13 insertions, 7 deletions
diff --git a/actionpack/lib/action_dispatch/http/headers.rb b/actionpack/lib/action_dispatch/http/headers.rb
index 040b51e040..a3bb25f75a 100644
--- a/actionpack/lib/action_dispatch/http/headers.rb
+++ b/actionpack/lib/action_dispatch/http/headers.rb
@@ -14,17 +14,18 @@ module ActionDispatch
end
def [](header_name)
- if include?(header_name)
- super
- else
- super(env_name(header_name))
- end
+ super env_name(header_name)
+ end
+
+ def fetch(header_name, default=nil, &block)
+ super env_name(header_name), default, &block
end
private
- # Converts a HTTP header name to an environment variable name.
+ # Converts a HTTP header name to an environment variable name if it is
+ # not contained within the headers hash.
def env_name(header_name)
- @@env_cache[header_name]
+ include?(header_name) ? header_name : @@env_cache[header_name]
end
end
end
diff --git a/actionpack/test/dispatch/header_test.rb b/actionpack/test/dispatch/header_test.rb
index ec6ba494dc..bc7cad8db5 100644
--- a/actionpack/test/dispatch/header_test.rb
+++ b/actionpack/test/dispatch/header_test.rb
@@ -13,4 +13,9 @@ class HeaderTest < ActiveSupport::TestCase
assert_equal "text/plain", @headers["CONTENT_TYPE"]
assert_equal "text/plain", @headers["HTTP_CONTENT_TYPE"]
end
+
+ test "fetch" do
+ assert_equal "text/plain", @headers.fetch("content-type", nil)
+ assert_equal "not found", @headers.fetch('not-found', 'not found')
+ end
end