Class: ActionDispatch::Routing::RouteSet::Dispatcher
- Inherits:
-
Endpoint
- Object
- Endpoint
- ActionDispatch::Routing::RouteSet::Dispatcher
show all
- Defined in:
- lib/action_dispatch/routing/route_set.rb
Instance Method Summary
collapse
Methods inherited from Endpoint
#app, #matches?, #redirect?
Constructor Details
#initialize(defaults) ⇒ Dispatcher
Returns a new instance of Dispatcher.
26
27
28
|
# File 'lib/action_dispatch/routing/route_set.rb', line 26
def initialize(defaults)
@defaults = defaults
end
|
Instance Method Details
#controller(params, default_controller = true) ⇒ Object
If this is a default_controller (i.e. a controller specified by the user) we should raise an error in case it’s not found, because it usually means a user error. However, if the controller was retrieved through a dynamic segment, as in :controller(/:action), we should simply return nil and delegate the control back to Rack cascade. Besides, if this is not a default controller, it means we should respect the @scope parameter.
57
58
59
60
61
62
63
64
|
# File 'lib/action_dispatch/routing/route_set.rb', line 57
def controller(params, default_controller=true)
if params && params.key?(:controller)
controller_param = params[:controller]
controller_reference(controller_param)
end
rescue NameError => e
raise ActionController::RoutingError, e.message, e.backtrace if default_controller
end
|
#dispatcher? ⇒ Boolean
30
|
# File 'lib/action_dispatch/routing/route_set.rb', line 30
def dispatcher?; true; end
|
#prepare_params!(params) ⇒ Object
46
47
48
49
|
# File 'lib/action_dispatch/routing/route_set.rb', line 46
def prepare_params!(params)
normalize_controller!(params)
merge_default_action!(params)
end
|
#serve(req) ⇒ Object
32
33
34
35
36
37
38
39
40
41
42
43
44
|
# File 'lib/action_dispatch/routing/route_set.rb', line 32
def serve(req)
req.check_path_parameters!
params = req.path_parameters
prepare_params!(params)
unless controller = controller(params, @defaults.key?(:controller))
return [404, {'X-Cascade' => 'pass'}, []]
end
dispatch(controller, params[:action], req.env)
end
|