Skip to content

Instantly share code, notes, and snippets.

@jdunphy
Created March 22, 2010 17:53
Show Gist options
  • Select an option

  • Save jdunphy/340319 to your computer and use it in GitHub Desktop.

Select an option

Save jdunphy/340319 to your computer and use it in GitHub Desktop.
require 'active_support/memoizable'
module ActionDispatch
module Http
class Headers < ::Hash
extend ActiveSupport::Memoizable
def initialize(*args)
if args.size == 1 && args[0].is_a?(Hash)
super()
update(args[0])
else
super
end
end
def [](header_name)
if include?(header_name)
super
else
super(env_name(header_name))
end
end
private
# 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment