diff --git a/railties/lib/rails/commands/app/update_command.rb b/railties/lib/rails/commands/app/update_command.rb index fab7db2f1c9ba..daa178dffd719 100644 --- a/railties/lib/rails/commands/app/update_command.rb +++ b/railties/lib/rails/commands/app/update_command.rb @@ -69,7 +69,8 @@ def generator_options skip_action_mailbox: !defined?(ActionMailbox::Engine), skip_action_text: !defined?(ActionText::Engine), skip_action_cable: !defined?(ActionCable::Engine), - skip_brakeman: skip_brakeman?, + skip_brakeman: skip_gem?("brakeman"), + skip_rubocop: skip_gem?("rubocop"), skip_test: !defined?(Rails::TestUnitRailtie), skip_system_test: Rails.application.config.generators.system_tests.nil?, asset_pipeline: asset_pipeline, @@ -89,8 +90,8 @@ def asset_pipeline end end - def skip_brakeman? - require "brakeman" + def skip_gem?(gem_name) + require gem_name false rescue LoadError true diff --git a/railties/test/generators/app_generator_test.rb b/railties/test/generators/app_generator_test.rb index ddd559f382b98..618ace8de5296 100644 --- a/railties/test/generators/app_generator_test.rb +++ b/railties/test/generators/app_generator_test.rb @@ -296,6 +296,16 @@ def test_app_update_preserves_skip_brakeman end end + def test_app_update_preserves_skip_rubocop + run_generator [ destination_root, "--skip-rubocop" ] + + FileUtils.cd(destination_root) do + assert_no_changes -> { File.exist?("bin/rubocop") } do + run_app_update + end + end + end + def test_app_update_preserves_skip_test run_generator [ destination_root, "--skip-test" ]