From 5a2fdaa27796502daf0fb2314e599b76049296d4 Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Sat, 28 Apr 2012 14:27:08 -0700 Subject: Fix Engine#routes to not call draw_paths multiple times --- railties/lib/rails/engine.rb | 6 ++++-- railties/test/unit/engine_test.rb | 10 ++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/railties/lib/rails/engine.rb b/railties/lib/rails/engine.rb index d81f9cf7ff..d4f632702c 100644 --- a/railties/lib/rails/engine.rb +++ b/railties/lib/rails/engine.rb @@ -486,8 +486,10 @@ module Rails end def routes - @routes ||= ActionDispatch::Routing::RouteSet.new - @routes.draw_paths.concat paths["config/routes"].paths + @routes ||= ActionDispatch::Routing::RouteSet.new.tap do |routes| + routes.draw_paths.concat paths["config/routes"].paths + end + @routes.append(&Proc.new) if block_given? @routes end diff --git a/railties/test/unit/engine_test.rb b/railties/test/unit/engine_test.rb index 977f46ecea..02d40d97f6 100644 --- a/railties/test/unit/engine_test.rb +++ b/railties/test/unit/engine_test.rb @@ -12,5 +12,15 @@ module Unit assert !engine.routes? end + + it "does not add more paths to routes on each call" do + engine = Class.new(Rails::Engine) + + engine.routes + length = engine.routes.draw_paths.length + + engine.routes + assert_equal length, engine.routes.draw_paths.length + end end end -- cgit v1.2.3