diff options
author | Hongli Lai (Phusion) <hongli@phusion.nl> | 2008-08-27 11:39:06 +0200 |
---|---|---|
committer | Hongli Lai (Phusion) <hongli@phusion.nl> | 2008-08-27 11:39:06 +0200 |
commit | 08704c442d15b16511214731dd94108b737ef407 (patch) | |
tree | d92d53f39245256dea6aa38a11500938adccf777 /actionpack/lib/action_controller/headers.rb | |
parent | 920ad94598a9b90d048cb7cb19a34d7cb9e80392 (diff) | |
parent | 5db2f199aba9aa8d00adefa8237922ad684aca03 (diff) | |
download | rails-08704c442d15b16511214731dd94108b737ef407.tar.gz rails-08704c442d15b16511214731dd94108b737ef407.tar.bz2 rails-08704c442d15b16511214731dd94108b737ef407.zip |
Merge branch 'master' of git@github.com:lifo/docrails
Diffstat (limited to 'actionpack/lib/action_controller/headers.rb')
-rw-r--r-- | actionpack/lib/action_controller/headers.rb | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/actionpack/lib/action_controller/headers.rb b/actionpack/lib/action_controller/headers.rb index 7239438c49..139669c66f 100644 --- a/actionpack/lib/action_controller/headers.rb +++ b/actionpack/lib/action_controller/headers.rb @@ -1,31 +1,33 @@ +require 'active_support/memoizable' + module ActionController module Http class Headers < ::Hash - - def initialize(constructor = {}) - if constructor.is_a?(Hash) + extend ActiveSupport::Memoizable + + def initialize(*args) + if args.size == 1 && args[0].is_a?(Hash) super() - update(constructor) + update(args[0]) else - super(constructor) + super end end - + def [](header_name) if include?(header_name) - super + super else - super(normalize_header(header_name)) + super(env_name(header_name)) end end - - + private - # Takes an HTTP header name and returns it in the - # format - def normalize_header(header_name) + # Converts a HTTP header name to an environment variable name. + def env_name(header_name) "HTTP_#{header_name.upcase.gsub(/-/, '_')}" end + memoize :env_name end end -end
\ No newline at end of file +end |