Class: ActionDispatch::Routing::Redirect
- Inherits:
-
Endpoint
show all
- Defined in:
- actionpack/lib/action_dispatch/routing/redirection.rb
Overview
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods inherited from Endpoint
#app, #dispatcher?, #engine?, #matches?, #rack_app
Constructor Details
#initialize(status, block) ⇒ Redirect
15
16
17
18
|
# File 'actionpack/lib/action_dispatch/routing/redirection.rb', line 15
def initialize(status, block)
@status = status
@block = block
end
|
Instance Attribute Details
Returns the value of attribute block.
13
14
15
|
# File 'actionpack/lib/action_dispatch/routing/redirection.rb', line 13
def block
@block
end
|
Returns the value of attribute status.
13
14
15
|
# File 'actionpack/lib/action_dispatch/routing/redirection.rb', line 13
def status
@status
end
|
Instance Method Details
#build_response(req) ⇒ Object
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
# File 'actionpack/lib/action_dispatch/routing/redirection.rb', line 35
def build_response(req)
uri = URI.parse(path(req.path_parameters, req))
unless uri.host
if relative_path?(uri.path)
uri.path = "#{req.script_name}/#{uri.path}"
elsif uri.path.empty?
uri.path = req.script_name.empty? ? "/" : req.script_name
end
end
uri.scheme ||= req.scheme
uri.host ||= req.host
uri.port ||= req.port unless req.standard_port?
req.commit_flash
body = ""
= {
"Location" => uri.to_s,
"Content-Type" => "text/html; charset=#{ActionDispatch::Response.default_charset}",
"Content-Length" => body.length.to_s
}
ActionDispatch::Response.new(status, , body)
end
|
#call(env) ⇒ Object
22
23
24
25
26
27
28
29
30
31
32
33
|
# File 'actionpack/lib/action_dispatch/routing/redirection.rb', line 22
def call(env)
ActiveSupport::Notifications.instrument("redirect.action_dispatch") do |payload|
request = Request.new(env)
response = build_response(request)
payload[:status] = @status
payload[:location] = response.["Location"]
payload[:request] = request
response.to_a
end
end
|
67
68
69
|
# File 'actionpack/lib/action_dispatch/routing/redirection.rb', line 67
def inspect
"redirect(#{status})"
end
|
#path(params, request) ⇒ Object
63
64
65
|
# File 'actionpack/lib/action_dispatch/routing/redirection.rb', line 63
def path(params, request)
block.call params, request
end
|
#redirect? ⇒ Boolean
20
|
# File 'actionpack/lib/action_dispatch/routing/redirection.rb', line 20
def redirect?; true; end
|