aboutsummaryrefslogtreecommitdiffstats
path: root/railties
diff options
context:
space:
mode:
authorGuillermo Iguaran <guilleiguaran@gmail.com>2018-04-22 03:23:46 -0500
committerGitHub <noreply@github.com>2018-04-22 03:23:46 -0500
commit7316f3696a9a595382c4bf278ac4019a978cce30 (patch)
tree70fd026480d5dc649b98c5735dc51a875f4e603a /railties
parente4a0a048836512432b43c7fb623d32de2496a346 (diff)
parent6df0bd156af8e9229dd3069260a469c29a1e0fe3 (diff)
downloadrails-7316f3696a9a595382c4bf278ac4019a978cce30.tar.gz
rails-7316f3696a9a595382c4bf278ac4019a978cce30.tar.bz2
rails-7316f3696a9a595382c4bf278ac4019a978cce30.zip
Merge pull request #31554 from fatkodima/controller_generator_suffix
Gracefully handle extra "controller" when generating controller
Diffstat (limited to 'railties')
-rw-r--r--railties/lib/rails/generators/rails/controller/controller_generator.rb12
-rw-r--r--railties/test/generators/controller_generator_test.rb22
2 files changed, 33 insertions, 1 deletions
diff --git a/railties/lib/rails/generators/rails/controller/controller_generator.rb b/railties/lib/rails/generators/rails/controller/controller_generator.rb
index 6e2495d45f..eb75e7e661 100644
--- a/railties/lib/rails/generators/rails/controller/controller_generator.rb
+++ b/railties/lib/rails/generators/rails/controller/controller_generator.rb
@@ -20,10 +20,20 @@ module Rails
route generate_routing_code
end
- hook_for :template_engine, :test_framework, :helper, :assets
+ hook_for :template_engine, :test_framework, :helper, :assets do |generator|
+ invoke generator, [ remove_possible_suffix(name), actions ]
+ end
private
+ def file_name
+ @_file_name ||= remove_possible_suffix(super)
+ end
+
+ def remove_possible_suffix(name)
+ name.sub(/_?controller$/i, "")
+ end
+
# This method creates nested route entry for namespaced resources.
# For eg. rails g controller foo/bar/baz index show
# Will generate -
diff --git a/railties/test/generators/controller_generator_test.rb b/railties/test/generators/controller_generator_test.rb
index 91e4a86775..021004c9b8 100644
--- a/railties/test/generators/controller_generator_test.rb
+++ b/railties/test/generators/controller_generator_test.rb
@@ -116,4 +116,26 @@ class ControllerGeneratorTest < Rails::Generators::TestCase
assert_no_match(/namespace :admin/, routes)
end
end
+
+ def test_controller_suffix_is_not_duplicated
+ run_generator ["account_controller"]
+
+ assert_no_file "app/controllers/account_controller_controller.rb"
+ assert_file "app/controllers/account_controller.rb"
+
+ assert_no_file "app/views/account_controller/"
+ assert_file "app/views/account/"
+
+ assert_no_file "test/controllers/account_controller_controller_test.rb"
+ assert_file "test/controllers/account_controller_test.rb"
+
+ assert_no_file "app/helpers/account_controller_helper.rb"
+ assert_file "app/helpers/account_helper.rb"
+
+ assert_no_file "app/assets/javascripts/account_controller.js"
+ assert_file "app/assets/javascripts/account.js"
+
+ assert_no_file "app/assets/stylesheets/account_controller.css"
+ assert_file "app/assets/stylesheets/account.css"
+ end
end