diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2015-08-14 18:04:49 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2015-08-14 18:06:48 -0700 |
commit | a293812bffbc6e634e1a6e6794e9dec537d522a3 (patch) | |
tree | 9fe55f6939904b9244599e625de58c77b62f1dbb /actionpack | |
parent | 09d846e7b81cb9e5ff891c91874b4108ce3156ec (diff) | |
download | rails-a293812bffbc6e634e1a6e6794e9dec537d522a3.tar.gz rails-a293812bffbc6e634e1a6e6794e9dec537d522a3.tar.bz2 rails-a293812bffbc6e634e1a6e6794e9dec537d522a3.zip |
only keep one hash of named routes
The outer router object already keeps a hash of named routes, so we
should just use that.
Diffstat (limited to 'actionpack')
-rw-r--r-- | actionpack/lib/action_dispatch/journey/formatter.rb | 2 | ||||
-rw-r--r-- | actionpack/lib/action_dispatch/journey/routes.rb | 5 | ||||
-rw-r--r-- | actionpack/lib/action_dispatch/routing/route_set.rb | 3 | ||||
-rw-r--r-- | actionpack/test/journey/router_test.rb | 11 | ||||
-rw-r--r-- | actionpack/test/journey/routes_test.rb | 16 |
5 files changed, 18 insertions, 19 deletions
diff --git a/actionpack/lib/action_dispatch/journey/formatter.rb b/actionpack/lib/action_dispatch/journey/formatter.rb index d8bb10ffab..c19ff0f4db 100644 --- a/actionpack/lib/action_dispatch/journey/formatter.rb +++ b/actionpack/lib/action_dispatch/journey/formatter.rb @@ -155,7 +155,7 @@ module ActionDispatch def build_cache root = { ___routes: [] } - routes.each_with_index do |route, i| + routes.routes.each_with_index do |route, i| leaf = route.required_defaults.inject(root) do |h, tuple| h[tuple] ||= {} end diff --git a/actionpack/lib/action_dispatch/journey/routes.rb b/actionpack/lib/action_dispatch/journey/routes.rb index dacb0ccf48..4770b8b7cc 100644 --- a/actionpack/lib/action_dispatch/journey/routes.rb +++ b/actionpack/lib/action_dispatch/journey/routes.rb @@ -5,11 +5,10 @@ module ActionDispatch class Routes # :nodoc: include Enumerable - attr_reader :routes, :named_routes, :custom_routes, :anchored_routes + attr_reader :routes, :custom_routes, :anchored_routes def initialize @routes = [] - @named_routes = {} @ast = nil @anchored_routes = [] @custom_routes = [] @@ -37,7 +36,6 @@ module ActionDispatch routes.clear anchored_routes.clear custom_routes.clear - named_routes.clear end def partition_route(route) @@ -72,7 +70,6 @@ module ActionDispatch route.precedence = routes.length routes << route - named_routes[name] = route if name && !named_routes[name] partition_route(route) clear_cache! route diff --git a/actionpack/lib/action_dispatch/routing/route_set.rb b/actionpack/lib/action_dispatch/routing/route_set.rb index 4f698c84ab..30e308119d 100644 --- a/actionpack/lib/action_dispatch/routing/route_set.rb +++ b/actionpack/lib/action_dispatch/routing/route_set.rb @@ -143,6 +143,7 @@ module ActionDispatch end def key?(name) + return unless name routes.key? name.to_sym end @@ -356,7 +357,7 @@ module ActionDispatch @set = Journey::Routes.new @router = Journey::Router.new @set - @formatter = Journey::Formatter.new @set + @formatter = Journey::Formatter.new self @dispatcher_class = Routing::RouteSet::Dispatcher end diff --git a/actionpack/test/journey/router_test.rb b/actionpack/test/journey/router_test.rb index bddfbe7ef0..8a1414de8e 100644 --- a/actionpack/test/journey/router_test.rb +++ b/actionpack/test/journey/router_test.rb @@ -8,9 +8,10 @@ module ActionDispatch def setup @app = Routing::RouteSet::Dispatcher.new({}) - @routes = Routes.new - @router = Router.new(@routes) - @formatter = Formatter.new(@routes) + @route_set = ActionDispatch::Routing::RouteSet.new + @routes = @route_set.router.routes + @router = @route_set.router + @formatter = @route_set.formatter end class FakeRequestFeeler < ActionDispatch::Request @@ -184,8 +185,8 @@ module ActionDispatch def test_knows_what_parts_are_missing_from_named_route route_name = "gorby_thunderhorse" - path = Path::Pattern.build("/foo/:id", { :id => /\d+/ }, ['/', '.', '?'], false) - add_route nil, path, {}, [], {}, route_name + mapper = ActionDispatch::Routing::Mapper.new @route_set + mapper.get "/foo/:id", :as => route_name, :id => /\d+/, :to => "foo#bar" error = assert_raises(ActionController::UrlGenerationError) do @formatter.generate(route_name, { }, { }) diff --git a/actionpack/test/journey/routes_test.rb b/actionpack/test/journey/routes_test.rb index 01566f0148..bbe3228bf2 100644 --- a/actionpack/test/journey/routes_test.rb +++ b/actionpack/test/journey/routes_test.rb @@ -6,7 +6,9 @@ module ActionDispatch attr_reader :routes def setup - @routes = Routes.new + @route_set = ActionDispatch::Routing::RouteSet.new + @routes = @route_set.router.routes + @router = @route_set.router super end @@ -64,13 +66,11 @@ module ActionDispatch end def test_first_name_wins - one = Path::Pattern.from_string '/hello' - two = Path::Pattern.from_string '/aaron' - - add_route nil, one, {}, [], {}, 'aaron' - add_route nil, two, {}, [], {}, 'aaron' - - assert_equal '/hello', routes.named_routes['aaron'].path.spec.to_s + mapper = ActionDispatch::Routing::Mapper.new @route_set + mapper.get "/hello", to: "foo#bar", as: 'aaron' + assert_raise(ArgumentError) do + mapper.get "/aaron", to: "foo#bar", as: 'aaron' + end end end end |