diff --git a/railties/CHANGELOG.md b/railties/CHANGELOG.md index 3350b1a4b2..98316d1eca 100644 --- a/railties/CHANGELOG.md +++ b/railties/CHANGELOG.md @@ -1,3 +1,13 @@ +* Add a generic --skip-gems options to generator + + This option is useful if users want to remove some gems like jbuilder, + turbolinks, coffee-rails, etc that don't have specific options on the + generator. + + rails new my_app --skip-gems turbolinks coffee-rails + + *Rafael Mendonça França* + * Invalid `bin/rails generate` commands will now show spelling suggestions. *Richard Schneeman* diff --git a/railties/lib/rails/generators/app_base.rb b/railties/lib/rails/generators/app_base.rb index 3f253e3d3e..12f3767424 100644 --- a/railties/lib/rails/generators/app_base.rb +++ b/railties/lib/rails/generators/app_base.rb @@ -41,6 +41,9 @@ module Rails class_option :skip_active_record, type: :boolean, aliases: '-O', default: false, desc: 'Skip Active Record files' + class_option :skip_gems, type: :array, default: [], + desc: 'Skip the provided gems files' + class_option :skip_action_view, type: :boolean, aliases: '-V', default: false, desc: 'Skip Action View files' @@ -50,9 +53,6 @@ module Rails class_option :skip_spring, type: :boolean, default: false, desc: "Don't install Spring application preloader" - class_option :skip_turbolinks, type: :boolean, default: false, - desc: "Don't install Turbolinks" - class_option :database, type: :string, aliases: '-d', default: 'sqlite3', desc: "Preconfigure for selected database (options: #{DATABASES.join('/')})" @@ -82,7 +82,7 @@ module Rails end def initialize(*args) - @gem_filter = lambda { |gem| true } + @gem_filter = lambda { |gem| !options[:skip_gems].include?(gem.name) } @extra_entries = [] super convert_database_option_for_jruby @@ -290,10 +290,8 @@ module Rails gems << GemfileEntry.version("#{options[:javascript]}-rails", nil, "Use #{options[:javascript]} as the JavaScript library") - unless options[:skip_turbolinks] - gems << GemfileEntry.version("turbolinks", nil, - "Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks") - end + gems << GemfileEntry.version("turbolinks", nil, + "Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks") gems end end diff --git a/railties/test/generators/app_generator_test.rb b/railties/test/generators/app_generator_test.rb index 74c7c6e298..2ac5410960 100644 --- a/railties/test/generators/app_generator_test.rb +++ b/railties/test/generators/app_generator_test.rb @@ -448,11 +448,12 @@ class AppGeneratorTest < Rails::Generators::TestCase end end - def test_skip_turbolinks - run_generator [destination_root, "--skip-turbolinks"] + def test_generator_if_skip_gems_is_given + run_generator [destination_root, "--skip-gems", "turbolinks", "coffee-rails"] assert_file "Gemfile" do |content| assert_no_match(/turbolinks/, content) + assert_no_match(/coffee-rails/, content) end assert_file "app/views/layouts/application.html.erb" do |content| assert_no_match(/data-turbolinks-track/, content)