Class: ActionDispatch::Routing::Route

Inherits:
Object
  • Object
show all
Defined in:
actionpack/lib/action_dispatch/routing/route.rb

Overview

:nodoc:

Instance Attribute Summary (collapse)

Instance Method Summary (collapse)

Constructor Details

- (Route) initialize(set, app, conditions, requirements, defaults, name, anchor)

A new instance of Route



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'actionpack/lib/action_dispatch/routing/route.rb', line 7

def initialize(set, app, conditions, requirements, defaults, name, anchor)
  @set = set
  @app = app
  @defaults = defaults
  @name = name

  @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

  @conditions = Hash[conditions.map { |k,v| [k, Rack::Mount::RegexpWithNamedGroups.new(v)] }]
  @conditions.delete_if{ |k,v| k != :path_info && !valid_condition?(k) }
  @requirements.delete_if{ |k,v| !valid_condition?(k) }
end

Instance Attribute Details

- (Object) app (readonly)

Returns the value of attribute app



4
5
6
# File 'actionpack/lib/action_dispatch/routing/route.rb', line 4

def app
  @app
end

- (Object) conditions (readonly)

Returns the value of attribute conditions



4
5
6
# File 'actionpack/lib/action_dispatch/routing/route.rb', line 4

def conditions
  @conditions
end

- (Object) defaults (readonly)

Returns the value of attribute defaults



4
5
6
# File 'actionpack/lib/action_dispatch/routing/route.rb', line 4

def defaults
  @defaults
end

- (Object) name (readonly)

Returns the value of attribute name



4
5
6
# File 'actionpack/lib/action_dispatch/routing/route.rb', line 4

def name
  @name
end

- (Object) path (readonly)

Returns the value of attribute path



5
6
7
# File 'actionpack/lib/action_dispatch/routing/route.rb', line 5

def path
  @path
end

- (Object) requirements (readonly)

Returns the value of attribute requirements



5
6
7
# File 'actionpack/lib/action_dispatch/routing/route.rb', line 5

def requirements
  @requirements
end

- (Object) set (readonly)

Returns the value of attribute set



5
6
7
# File 'actionpack/lib/action_dispatch/routing/route.rb', line 5

def set
  @set
end

Instance Method Details

- (Object) segment_keys



41
42
43
# File 'actionpack/lib/action_dispatch/routing/route.rb', line 41

def segment_keys
  @segment_keys ||= conditions[:path_info].names.compact.map { |key| key.to_sym }
end

- (Object) to_a



45
46
47
# File 'actionpack/lib/action_dispatch/routing/route.rb', line 45

def to_a
  [@app, @conditions, @defaults, @name]
end

- (Object) to_s



49
50
51
52
53
# File 'actionpack/lib/action_dispatch/routing/route.rb', line 49

def to_s
  @to_s ||= begin
    "%-6s %-40s %s" % [(verb || :any).to_s.upcase, path, requirements.inspect]
  end
end

- (Object) verb



29
30
31
32
33
34
35
36
37
38
39
# File 'actionpack/lib/action_dispatch/routing/route.rb', line 29

def verb
  if method = conditions[:request_method]
    case method
    when Regexp
      source = method.source.upcase
      source =~ /\A\^[-A-Z|]+\$\Z/ ? source[1..-2] : source
    else
      method.to_s.upcase
    end
  end
end