From a9f9e1dd98cc2dd161d51d6902aac90b275fee05 Mon Sep 17 00:00:00 2001 From: Thiago Pinto Date: Tue, 27 Oct 2015 03:34:07 -0200 Subject: [PATCH] Route generator should be idempotent - closes #22082 --- railties/CHANGELOG.md | 4 ++++ railties/lib/rails/generators/actions.rb | 2 +- railties/test/generators/actions_test.rb | 15 +++++++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/railties/CHANGELOG.md b/railties/CHANGELOG.md index 967f850ea06f5..85e71b6c5c6e7 100644 --- a/railties/CHANGELOG.md +++ b/railties/CHANGELOG.md @@ -1,3 +1,7 @@ +* Route generator should be idempotent + running generators several times no longer require you to cleanup routes.rb + + *Thiago Pinto* * Allow passing an environment to `config_for`. *Simon Eskildsen* diff --git a/railties/lib/rails/generators/actions.rb b/railties/lib/rails/generators/actions.rb index b4356f71e056a..5bbd2f1aed61b 100644 --- a/railties/lib/rails/generators/actions.rb +++ b/railties/lib/rails/generators/actions.rb @@ -235,7 +235,7 @@ def route(routing_code) sentinel = /\.routes\.draw do\s*\n/m in_root do - inject_into_file 'config/routes.rb', " #{routing_code}\n", { after: sentinel, verbose: false, force: true } + inject_into_file 'config/routes.rb', " #{routing_code}\n", { after: sentinel, verbose: false, force: false } end end diff --git a/railties/test/generators/actions_test.rb b/railties/test/generators/actions_test.rb index fabba555efa1a..b4fbea4af47b0 100644 --- a/railties/test/generators/actions_test.rb +++ b/railties/test/generators/actions_test.rb @@ -235,6 +235,21 @@ def test_route_should_add_data_to_the_routes_block_in_config_routes assert_file 'config/routes.rb', /#{Regexp.escape(route_command)}/ end + def test_route_should_be_idempotent + run_generator + route_path = File.expand_path('config/routes.rb', destination_root) + + # runs first time, not asserting + action :route, "root 'welcome#index'" + content_1 = File.read(route_path) + + # runs second time + action :route, "root 'welcome#index'" + content_2 = File.read(route_path) + + assert_equal content_1, content_2 + end + def test_route_should_add_data_with_an_new_line run_generator action :route, "root 'welcome#index'"