From 8671dbdefd08bf93e5f5c8b613b4723a1dab13e5 Mon Sep 17 00:00:00 2001 From: Vipul A M Date: Wed, 20 Apr 2016 21:33:33 +0530 Subject: [PATCH] Replicate behaviour from rails-api to not create edit/new routes on api apps by default, to mimic behaviour from controllers. See also https://github.com/rails-api/rails-api/commit/41f949f44dcc8893e78879e61e9a7a71302962ad Fixes #24573 --- .../rails/resource_route/resource_route_generator.rb | 8 +++++++- railties/test/generators/namespaced_generators_test.rb | 2 +- railties/test/generators/scaffold_generator_test.rb | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/railties/lib/rails/generators/rails/resource_route/resource_route_generator.rb b/railties/lib/rails/generators/rails/resource_route/resource_route_generator.rb index 42705107ae7b9..3bb1ad1084ae8 100644 --- a/railties/lib/rails/generators/rails/resource_route/resource_route_generator.rb +++ b/railties/lib/rails/generators/rails/resource_route/resource_route_generator.rb @@ -1,6 +1,10 @@ module Rails module Generators class ResourceRouteGenerator < NamedBase # :nodoc: + + class_option :api, type: :boolean, + desc: "Preconfigure smaller stack for API only apps" + # Properly nests namespaces passed into a generator # # $ rails generate resource admin/users/products @@ -21,7 +25,9 @@ def add_resource_route end # inserts the primary resource - write("resources :#{file_name.pluralize}", route_length + 1) + resource_string = "resources :#{file_name.pluralize}" + resource_string << ", except: [:new, :edit]" if options.api? + write(resource_string, route_length + 1) # ends blocks regular_class_path.each_index do |index| diff --git a/railties/test/generators/namespaced_generators_test.rb b/railties/test/generators/namespaced_generators_test.rb index d76759a7d11fe..8c34ee2347b84 100644 --- a/railties/test/generators/namespaced_generators_test.rb +++ b/railties/test/generators/namespaced_generators_test.rb @@ -409,7 +409,7 @@ def test_api_scaffold_with_namespace_on_invoke # Route assert_file "config/routes.rb" do |route| - assert_match(/^ namespace :admin do\n resources :roles\n end$/, route) + assert_match(/^ namespace :admin do\n resources :roles, except: \[:new, :edit\]\n end$/, route) end # Controller diff --git a/railties/test/generators/scaffold_generator_test.rb b/railties/test/generators/scaffold_generator_test.rb index 5e45120704cdd..a9367354cd157 100644 --- a/railties/test/generators/scaffold_generator_test.rb +++ b/railties/test/generators/scaffold_generator_test.rb @@ -99,7 +99,7 @@ def test_api_scaffold_on_invoke # Route assert_file "config/routes.rb" do |route| - assert_match(/resources :product_lines$/, route) + assert_match(/resources :product_lines, except: \[:new, :edit\]$/, route) end # Controller