Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 8bb0d9c

Browse files
committedMay 2, 2024
Inline AppUpdater into App::UpdateCommand
1 parent 11ad535 commit 8bb0d9c

File tree

3 files changed

+51
-65
lines changed

3 files changed

+51
-65
lines changed
 

‎railties/lib/rails/app_updater.rb

Lines changed: 0 additions & 52 deletions
This file was deleted.

‎railties/lib/rails/commands/app/update_command.rb

Lines changed: 51 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# frozen_string_literal: true
22

3-
require "rails/app_updater"
3+
require "rails/generators"
4+
require "rails/generators/rails/app/app_generator"
45

56
module Rails
67
module Command
@@ -11,27 +12,69 @@ def perform
1112
configs
1213
bin
1314
active_storage
14-
Rails::AppUpdater.invoke_from_app_generator :display_upgrade_guide_info
15+
display_upgrade_guide_info
1516
end
1617

17-
desc "configs", "Update configuration files in the application config/ directory", hide: true
18+
desc "configs", "Update config files in the application config/ directory", hide: true
1819
def configs
1920
require_application!
20-
Rails::AppUpdater.invoke_from_app_generator :create_boot_file
21-
Rails::AppUpdater.invoke_from_app_generator :update_config_files
21+
app_generator.create_boot_file
22+
app_generator.update_config_files
2223
end
2324

24-
desc "bin", "Update executables in the application bin/ directory", hide: true
25+
desc "bin", "Add or update executables in the application bin/ directory", hide: true
2526
def bin
2627
require_application!
27-
Rails::AppUpdater.invoke_from_app_generator :update_bin_files
28+
app_generator.update_bin_files
2829
end
2930

3031
desc "active_storage", "Run the active_storage:update command", hide: true
3132
def active_storage
3233
require_application!
33-
Rails::AppUpdater.invoke_from_app_generator :update_active_storage
34+
app_generator.update_active_storage
3435
end
36+
37+
private
38+
def display_upgrade_guide_info
39+
say "\nAfter this, check Rails upgrade guide at https://guides.rubyonrails.org/upgrading_ruby_on_rails.html for more details about upgrading your app."
40+
end
41+
42+
def app_generator
43+
@app_generator ||= begin
44+
gen = Rails::Generators::AppGenerator.new(["rails"], generator_options, destination_root: Rails.root)
45+
gen.send(:valid_const?) unless File.exist?(Rails.root.join("config", "application.rb"))
46+
gen
47+
end
48+
end
49+
50+
def generator_options
51+
options = { api: !!Rails.application.config.api_only, update: true }
52+
options[:name] = Rails.application.class.name.chomp("::Application").underscore
53+
options[:skip_active_job] = !defined?(ActiveJob::Railtie)
54+
options[:skip_active_record] = !defined?(ActiveRecord::Railtie)
55+
options[:skip_active_storage] = !defined?(ActiveStorage::Engine)
56+
options[:skip_action_mailer] = !defined?(ActionMailer::Railtie)
57+
options[:skip_action_mailbox] = !defined?(ActionMailbox::Engine)
58+
options[:skip_action_text] = !defined?(ActionText::Engine)
59+
options[:skip_action_cable] = !defined?(ActionCable::Engine)
60+
options[:skip_test] = !defined?(Rails::TestUnitRailtie)
61+
options[:skip_system_test] = Rails.application.config.generators.system_tests.nil?
62+
options[:asset_pipeline] = asset_pipeline
63+
options[:skip_asset_pipeline] = asset_pipeline.nil?
64+
options[:skip_bootsnap] = !defined?(Bootsnap)
65+
options
66+
end
67+
68+
def asset_pipeline
69+
case
70+
when defined?(Sprockets::Railtie)
71+
"sprockets"
72+
when defined?(Propshaft::Railtie)
73+
"propshaft"
74+
else
75+
nil
76+
end
77+
end
3578
end
3679
end
3780
end

‎railties/lib/rails/generators/rails/app/app_generator.rb

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -412,11 +412,6 @@ def create_credentials
412412
build(:credentials_diff_enroll)
413413
end
414414

415-
def display_upgrade_guide_info
416-
say "\nAfter this, check Rails upgrade guide at https://guides.rubyonrails.org/upgrading_ruby_on_rails.html for more details about upgrading your app."
417-
end
418-
remove_task :display_upgrade_guide_info
419-
420415
def create_boot_file
421416
template "config/boot.rb"
422417
end

0 commit comments

Comments
 (0)
Please sign in to comment.