Class: ActionDispatch::Routing::Mapper::Constraints
- Defined in:
- lib/action_dispatch/routing/mapper.rb
Overview
:nodoc:
Constant Summary collapse
- SERVE =
->(app, req) { app.serve req }
- CALL =
->(app, req) { app.call req.env }
Instance Attribute Summary collapse
-
#app ⇒ Object
readonly
Returns the value of attribute app.
-
#constraints ⇒ Object
readonly
Returns the value of attribute constraints.
Instance Method Summary collapse
- #dispatcher? ⇒ Boolean
-
#initialize(app, constraints, strategy) ⇒ Constraints
constructor
A new instance of Constraints.
- #matches?(req) ⇒ Boolean
- #serve(req) ⇒ Object
Methods inherited from Endpoint
#engine?, #rack_app, #redirect?
Constructor Details
#initialize(app, constraints, strategy) ⇒ Constraints
Returns a new instance of Constraints.
22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/action_dispatch/routing/mapper.rb', line 22 def initialize(app, constraints, strategy) # Unwrap Constraints objects. I don't actually think it's possible # to pass a Constraints object to this constructor, but there were # multiple places that kept testing children of this object. I # *think* they were just being defensive, but I have no idea. if app.is_a?(self.class) constraints += app.constraints app = app.app end @strategy = strategy @app, @constraints, = app, constraints end |
Instance Attribute Details
#app ⇒ Object (readonly)
Returns the value of attribute app.
17 18 19 |
# File 'lib/action_dispatch/routing/mapper.rb', line 17 def app @app end |
#constraints ⇒ Object (readonly)
Returns the value of attribute constraints.
17 18 19 |
# File 'lib/action_dispatch/routing/mapper.rb', line 17 def constraints @constraints end |
Instance Method Details
#dispatcher? ⇒ Boolean
37 |
# File 'lib/action_dispatch/routing/mapper.rb', line 37 def dispatcher?; @strategy == SERVE; end |
#matches?(req) ⇒ Boolean
39 40 41 42 43 44 |
# File 'lib/action_dispatch/routing/mapper.rb', line 39 def matches?(req) @constraints.all? do |constraint| (constraint.respond_to?(:matches?) && constraint.matches?(req)) || (constraint.respond_to?(:call) && constraint.call(*constraint_args(constraint, req))) end end |
#serve(req) ⇒ Object
46 47 48 49 50 |
# File 'lib/action_dispatch/routing/mapper.rb', line 46 def serve(req) return [ 404, { "X-Cascade" => "pass" }, [] ] unless matches?(req) @strategy.call @app, req end |