class Rails::Generators::AppGenerator
:nodoc:
def self.banner
def self.banner "rails new #{arguments.map(&:usage).join(' ')} [options]" end
def self.exit_on_failure?
We want to exit on failure to be kind to other libraries
:nodoc:
def self.exit_on_failure? true end
def after_bundle(&block) # :doc:
end
git add: '.'
after_bundle do
have run.
Registers a callback to be executed after bundle binstubs
def after_bundle(&block) # :doc: @after_bundle_callbacks << block end
def create_active_record_files
def create_active_record_files return if options[:skip_active_record] build(:database_yml) end
def create_app_files
def create_app_files build(:app) end
def create_bin_files
def create_bin_files build(:bin) end
def create_boot_file
def create_boot_file template "config/boot.rb" end
def create_config_files
def create_config_files build(:config) end
def create_credentials
def create_credentials build(:credentials) end
def create_db_files
def create_db_files return if options[:skip_active_record] build(:db) end
def create_lib_files
def create_lib_files build(:lib) end
def create_log_files
def create_log_files build(:log) end
def create_master_key
def create_master_key build(:master_key) end
def create_public_files
def create_public_files build(:public_directory) end
def create_root_files
def create_root_files build(:readme) build(:rakefile) build(:ruby_version) build(:configru) unless options[:skip_git] build(:gitignore) build(:gitattributes) end build(:gemfile) build(:version_control) end
def create_storage_files
def create_storage_files build(:storage) unless skip_active_storage? end
def create_system_test_files
def create_system_test_files build(:system_test) if depends_on_system_test? end
def create_test_files
def create_test_files build(:test) unless options[:skip_test] end
def create_tmp_files
def create_tmp_files build(:tmp) end
def create_vendor_files
def create_vendor_files build(:vendor) end
def delete_action_cable_files_skipping_action_cable
def delete_action_cable_files_skipping_action_cable if options[:skip_action_cable] remove_dir "app/javascript/channels" remove_dir "app/channels" remove_dir "test/channels" end end
def delete_action_mailer_files_skipping_action_mailer
def delete_action_mailer_files_skipping_action_mailer if skip_action_mailer? remove_file "app/views/layouts/mailer.html.erb" remove_file "app/views/layouts/mailer.text.erb" remove_dir "app/mailers" remove_dir "test/mailers" end end
def delete_active_job_folder_if_skipping_active_job
def delete_active_job_folder_if_skipping_active_job if options[:skip_active_job] remove_dir "app/jobs" end end
def delete_api_initializers
def delete_api_initializers unless options[:api] remove_file "config/initializers/cors.rb" end end
def delete_app_assets_if_api_option
def delete_app_assets_if_api_option if options[:api] remove_dir "app/assets" remove_dir "lib/assets" remove_dir "tmp/cache/assets" end end
def delete_app_helpers_if_api_option
def delete_app_helpers_if_api_option if options[:api] remove_dir "app/helpers" remove_dir "test/helpers" end end
def delete_app_views_if_api_option
def delete_app_views_if_api_option if options[:api] if skip_action_mailer? remove_dir "app/views" else remove_file "app/views/layouts/application.html.erb" end end end
def delete_application_record_skipping_active_record
def delete_application_record_skipping_active_record if options[:skip_active_record] remove_file "app/models/application_record.rb" end end
def delete_assets_initializer_skipping_sprockets_and_propshaft
def delete_assets_initializer_skipping_sprockets_and_propshaft if skip_sprockets? && skip_propshaft? remove_file "config/initializers/assets.rb" end if skip_sprockets? remove_file "app/assets/config/manifest.js" remove_dir "app/assets/config" remove_file "app/assets/stylesheets/application.css" create_file "app/assets/stylesheets/application.css", "/* Application styles */\n" unless options[:api] end end
def delete_new_framework_defaults
def delete_new_framework_defaults unless options[:update] remove_file "config/initializers/new_framework_defaults_7_0.rb" end end
def delete_non_api_initializers_if_api_option
def delete_non_api_initializers_if_api_option if options[:api] remove_file "config/initializers/content_security_policy.rb" remove_file "config/initializers/permissions_policy.rb" end end
def delete_public_files_if_api_option
def delete_public_files_if_api_option if options[:api] remove_file "public/404.html" remove_file "public/422.html" remove_file "public/500.html" remove_file "public/apple-touch-icon-precomposed.png" remove_file "public/apple-touch-icon.png" remove_file "public/favicon.ico" end end
def display_upgrade_guide_info
def display_upgrade_guide_info say "\nAfter this, check Rails upgrade guide at https://guides.rubyonrails.org/upgrading_ruby_on_rails.html for more details about upgrading your app." end
def file(*args, &block)
def file(*args, &block) create_file(*args, &block) end
def finish_template
def finish_template build(:leftovers) end
def get_builder_class
def get_builder_class defined?(::AppBuilder) ? ::AppBuilder : Rails::AppBuilder end
def initialize(*args)
def initialize(*args) super if !options[:skip_active_record] && !DATABASES.include?(options[:database]) raise Error, "Invalid value for --database option. Supported preconfigurations are: #{DATABASES.join(", ")}." end # Force sprockets and JavaScript to be skipped when generating API only apps. # Can't modify options hash as it's frozen by default. if options[:api] self.options = options.merge(skip_asset_pipeline: true, skip_javascript: true).freeze end if options[:minimal] self.options = options.merge( skip_action_cable: true, skip_action_mailer: true, skip_action_mailbox: true, skip_action_text: true, skip_active_job: true, skip_active_storage: true, skip_bootsnap: true, skip_dev_gems: true, skip_javascript: true, skip_jbuilder: true, skip_system_test: true, skip_hotwire: true).freeze end @after_bundle_callbacks = [] end
def run_after_bundle_callbacks
def run_after_bundle_callbacks @after_bundle_callbacks.each(&:call) end
def update_active_storage
def update_active_storage unless skip_active_storage? rails_command "active_storage:update", inline: true end end
def update_bin_files
def update_bin_files build(:bin_when_updating) end
def update_config_files
def update_config_files build(:config_when_updating) end
def update_db_schema
def update_db_schema build(:db_when_updating) end