diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2015-08-20 15:34:18 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2015-08-20 15:34:18 -0700 |
commit | 867810cdfa920db0bd0414e8ec4a47a3586edc8b (patch) | |
tree | d19fd24012a4a64c61e9b1a4b964d1c6d700a9da /actionpack | |
parent | 7354ef146eee8a157d8102b615c198b799505f7f (diff) | |
download | rails-867810cdfa920db0bd0414e8ec4a47a3586edc8b.tar.gz rails-867810cdfa920db0bd0414e8ec4a47a3586edc8b.tar.bz2 rails-867810cdfa920db0bd0414e8ec4a47a3586edc8b.zip |
set route precedence at allocation time
This way we can make the Route object a read-only data structure.
Diffstat (limited to 'actionpack')
-rw-r--r-- | actionpack/lib/action_dispatch/journey/route.rb | 10 | ||||
-rw-r--r-- | actionpack/lib/action_dispatch/routing/mapper.rb | 4 |
2 files changed, 6 insertions, 8 deletions
diff --git a/actionpack/lib/action_dispatch/journey/route.rb b/actionpack/lib/action_dispatch/journey/route.rb index 209cd20d80..f5c9abf1cc 100644 --- a/actionpack/lib/action_dispatch/journey/route.rb +++ b/actionpack/lib/action_dispatch/journey/route.rb @@ -1,13 +1,11 @@ module ActionDispatch module Journey # :nodoc: class Route # :nodoc: - attr_reader :app, :path, :defaults, :name + attr_reader :app, :path, :defaults, :name, :precedence attr_reader :constraints alias :conditions :constraints - attr_accessor :precedence - module VerbMatchers VERBS = %w{ DELETE GET HEAD OPTIONS LINK PATCH POST PUT TRACE UNLINK } VERBS.each do |v| @@ -51,13 +49,13 @@ module ActionDispatch def self.build(name, app, path, constraints, required_defaults, defaults) request_method_match = verb_matcher(constraints.delete(:request_method)) - new name, app, path, constraints, required_defaults, defaults, request_method_match + new name, app, path, constraints, required_defaults, defaults, request_method_match, 0 end ## # +path+ is a path constraint. # +constraints+ is a hash of constraints to be applied to this route. - def initialize(name, app, path, constraints, required_defaults, defaults, request_method_match) + def initialize(name, app, path, constraints, required_defaults, defaults, request_method_match, precedence) @name = name @app = app @path = path @@ -70,7 +68,7 @@ module ActionDispatch @required_parts = nil @parts = nil @decorated_ast = nil - @precedence = 0 + @precedence = precedence @path_formatter = @path.build_formatter end diff --git a/actionpack/lib/action_dispatch/routing/mapper.rb b/actionpack/lib/action_dispatch/routing/mapper.rb index c1134d16ad..51bafb539f 100644 --- a/actionpack/lib/action_dispatch/routing/mapper.rb +++ b/actionpack/lib/action_dispatch/routing/mapper.rb @@ -150,9 +150,9 @@ module ActionDispatch conditions, required_defaults, defaults, - request_method) + request_method, + precedence) - route.precedence = precedence route end |