Module: Rack::Request::Env

Included in:
Rack::Request
Defined in:
lib/rack/request.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#envObject (readonly)

The environment of the request.



84
85
86
# File 'lib/rack/request.rb', line 84

def env
  @env
end

Instance Method Details

#add_header(key, v) ⇒ Object

Add a header that may have multiple values.

Example:

request.add_header 'Accept', 'image/png'
request.add_header 'Accept', '*/*'

assert_equal 'image/png,*/*', request.get_header('Accept')

www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2



129
130
131
132
133
134
135
136
137
# File 'lib/rack/request.rb', line 129

def add_header(key, v)
  if v.nil?
    get_header key
  elsif has_header? key
    set_header key, "#{get_header key},#{v}"
  else
    set_header key, v
  end
end

#delete_header(name) ⇒ Object

Delete a request specific value for ‘name`.



140
141
142
# File 'lib/rack/request.rb', line 140

def delete_header(name)
  @env.delete name
end

#each_header(&block) ⇒ Object

Loops through each key / value pair in the request specific data.



111
112
113
# File 'lib/rack/request.rb', line 111

def each_header(&block)
  @env.each(&block)
end

#fetch_header(name, &block) ⇒ Object

If a block is given, it yields to the block if the value hasn’t been set on the request.



106
107
108
# File 'lib/rack/request.rb', line 106

def fetch_header(name, &block)
  @env.fetch(name, &block)
end

#get_header(name) ⇒ Object

Get a request specific value for ‘name`.



100
101
102
# File 'lib/rack/request.rb', line 100

def get_header(name)
  @env[name]
end

#has_header?(name) ⇒ Boolean

Predicate method to test to see if ‘name` has been set as request specific data

Returns:

  • (Boolean)


95
96
97
# File 'lib/rack/request.rb', line 95

def has_header?(name)
  @env.key? name
end

#initialize(env) ⇒ Object



86
87
88
89
90
91
# File 'lib/rack/request.rb', line 86

def initialize(env)
  @env = env
  # This module is included at least in `ActionDispatch::Request`
  # The call to `super()` allows additional mixed-in initializers are called
  super()
end

#initialize_copy(other) ⇒ Object



144
145
146
# File 'lib/rack/request.rb', line 144

def initialize_copy(other)
  @env = other.env.dup
end

#set_header(name, v) ⇒ Object

Set a request specific value for ‘name` to `v`



116
117
118
# File 'lib/rack/request.rb', line 116

def set_header(name, v)
  @env[name] = v
end