Class: ActionDispatch::Routing::Route
- Inherits:
-
Object
- Object
- ActionDispatch::Routing::Route
- Defined in:
- lib/action_dispatch/routing/route.rb
Overview
:nodoc:
Instance Attribute Summary collapse
-
#app ⇒ Object
readonly
Returns the value of attribute app.
-
#conditions ⇒ Object
readonly
Returns the value of attribute conditions.
-
#defaults ⇒ Object
readonly
Returns the value of attribute defaults.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#path ⇒ Object
readonly
Returns the value of attribute path.
-
#requirements ⇒ Object
readonly
Returns the value of attribute requirements.
-
#set ⇒ Object
readonly
Returns the value of attribute set.
Instance Method Summary collapse
-
#initialize(set, app, conditions, requirements, defaults, name, anchor) ⇒ Route
constructor
A new instance of Route.
- #segment_keys ⇒ Object
- #to_a ⇒ Object
- #to_s ⇒ Object
- #verb ⇒ Object
Constructor Details
#initialize(set, app, conditions, requirements, defaults, name, anchor) ⇒ Route
Returns a new instance of Route.
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/action_dispatch/routing/route.rb', line 9 def initialize(set, app, conditions, requirements, defaults, name, anchor) @set = set @app = app @defaults = defaults @name = name # FIXME: we should not be doing this much work in a constructor. @requirements = requirements.merge(defaults) @requirements.delete(:controller) if @requirements[:controller].is_a?(Regexp) @requirements.delete_if { |k, v| v == Regexp.compile("[^#{SEPARATORS.join}]+") } if path = conditions[:path_info] @path = path conditions[:path_info] = ::Rack::Mount::Strexp.compile(path, requirements, SEPARATORS, anchor) end @verbs = conditions[:request_method] || [] @conditions = conditions.dup # Rack-Mount requires that :request_method be a regular expression. # :request_method represents the HTTP verb that matches this route. # # Here we munge values before they get sent on to rack-mount. @conditions[:request_method] = %r[^#{verb}$] unless @verbs.empty? @conditions[:path_info] = Rack::Mount::RegexpWithNamedGroups.new(@conditions[:path_info]) if @conditions[:path_info] @conditions.delete_if{ |k,v| k != :path_info && !valid_condition?(k) } @requirements.delete_if{ |k,v| !valid_condition?(k) } end |
Instance Attribute Details
#app ⇒ Object (readonly)
Returns the value of attribute app.
6 7 8 |
# File 'lib/action_dispatch/routing/route.rb', line 6 def app @app end |
#conditions ⇒ Object (readonly)
Returns the value of attribute conditions.
6 7 8 |
# File 'lib/action_dispatch/routing/route.rb', line 6 def conditions @conditions end |
#defaults ⇒ Object (readonly)
Returns the value of attribute defaults.
6 7 8 |
# File 'lib/action_dispatch/routing/route.rb', line 6 def defaults @defaults end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
6 7 8 |
# File 'lib/action_dispatch/routing/route.rb', line 6 def name @name end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
7 8 9 |
# File 'lib/action_dispatch/routing/route.rb', line 7 def path @path end |
#requirements ⇒ Object (readonly)
Returns the value of attribute requirements.
7 8 9 |
# File 'lib/action_dispatch/routing/route.rb', line 7 def requirements @requirements end |
#set ⇒ Object (readonly)
Returns the value of attribute set.
7 8 9 |
# File 'lib/action_dispatch/routing/route.rb', line 7 def set @set end |
Instance Method Details
#segment_keys ⇒ Object
46 47 48 |
# File 'lib/action_dispatch/routing/route.rb', line 46 def segment_keys @segment_keys ||= conditions[:path_info].names.compact.map { |key| key.to_sym } end |
#to_a ⇒ Object
50 51 52 |
# File 'lib/action_dispatch/routing/route.rb', line 50 def to_a [@app, @conditions, @defaults, @name] end |
#to_s ⇒ Object
55 56 57 58 59 |
# File 'lib/action_dispatch/routing/route.rb', line 55 def to_s @to_s ||= begin "%-6s %-40s %s" % [(verb || :any).to_s.upcase, path, requirements.inspect] end end |
#verb ⇒ Object
42 43 44 |
# File 'lib/action_dispatch/routing/route.rb', line 42 def verb @verbs.join '|' end |