Class: Rails::Generators::AppGenerator
  
  
  
  
  
    - Inherits:
 
    - 
      AppBase
      
        
        show all
      
    
 
  
  
  
  
  
  
  
  
  
  
    - Defined in:
 
    - railties/lib/rails/commands/application/application_command.rb,
  railties/lib/rails/generators/rails/app/app_generator.rb
 
  
  
 
Overview
  
  
    
      Constant Summary
      collapse
    
    
      
        - OPTION_IMPLICATIONS =
          
  
         
        AppBase::OPTION_IMPLICATIONS.merge(
  skip_git: [:skip_decrypted_diffs],
  minimal: [
    :skip_action_cable,
    :skip_action_mailbox,
    :skip_action_mailer,
    :skip_action_text,
    :skip_active_job,
    :skip_active_storage,
    :skip_bootsnap,
    :skip_brakeman,
    :skip_ci,
    :skip_dev_gems,
    :skip_docker,
    :skip_hotwire,
    :skip_javascript,
    :skip_jbuilder,
    :skip_kamal,
    :skip_rubocop,
    :skip_solid,
    :skip_system_test,
    :skip_thruster
  ],
  api: [
    :skip_asset_pipeline,
    :skip_javascript,
  ],
) do |option, implications, more_implications|
  implications + more_implications
end 
      
        - META_OPTIONS =
          
  
         
        [:minimal]
 
      
    
  
  
  
  Constants inherited
     from AppBase
  Rails::Generators::AppBase::BUN_VERSION, Rails::Generators::AppBase::CSS_OPTIONS, Rails::Generators::AppBase::JAVASCRIPT_OPTIONS, Rails::Generators::AppBase::NODE_LTS_VERSION
  
  
  Constants included
     from AppName
  Rails::Generators::AppName::RESERVED_NAMES
  Instance Attribute Summary
  
  Attributes inherited from AppBase
  #rails_template
  
    
      Class Method Summary
      collapse
    
    
  
    
      Instance Method Summary
      collapse
    
    
  
  
  
  
  
  
  
  
  
  Methods inherited from AppBase
  add_shared_options_for, edge_branch, strict_args_position
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  Methods inherited from Base
  base_root, class_option, default_source_root, desc, hide!, hook_for, inherited, namespace, remove_hook_for, source_root
  
  
  
  
  
  
  
  
  Methods included from Actions
  #add_source, #environment, #gem, #gem_group, #generate, #git, #github, #initializer, #lib, #rails_command, #rake, #rakefile, #readme, #route, #vendor
  
  
  Constructor Details
  
    
  
  
    
Returns a new instance of AppGenerator.
   
 
  
  
    
      
339
340
341
342
343
344
345 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 339
def initialize(*args)
  super
  imply_options(OPTION_IMPLICATIONS, meta_options: META_OPTIONS)
  @after_bundle_callbacks = []
end 
     | 
  
 
  
 
  
    Class Method Details
    
      
  
  
    .apply_rails_template(template, destination)  ⇒ Object 
  
  
  
  
  
    
      
331
332
333
334
335
336
337 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 331
def self.apply_rails_template(template, destination)   generator = new([destination], { template: template }, { destination_root: destination })
  generator.set_default_accessors!
  generator.apply_rails_template
  generator.run_bundle
  generator.run_after_bundle_callbacks
end
     | 
  
 
    
      
  
  
    
      
584
585
586 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 584
def self.banner
  "rails new #{arguments.map(&:usage).join(' ')} [options]"
end
     | 
  
 
    
      
  
  
    .exit_on_failure?  ⇒ Boolean 
  
  
  
  
    
We want to exit on failure to be kind to other libraries This is only when accessing via CLI
   
 
  
    
      
11
12
13 
     | 
    
      # File 'railties/lib/rails/commands/application/application_command.rb', line 11
def self.exit_on_failure?
  true
end 
     | 
  
 
    
   
  
    Instance Method Details
    
      
  
  
    #create_active_record_files  ⇒ Object 
  
  
  
  
    
      
425
426
427
428 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 425
def create_active_record_files
  return if options[:skip_active_record]
  build(:database_yml)
end 
     | 
  
 
    
      
  
  
    #create_app_files  ⇒ Object 
  
  
  
  
    
      
368
369
370 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 368
def create_app_files
  build(:app)
end 
     | 
  
 
    
      
  
  
    #create_bin_files  ⇒ Object 
  
  
  
  
    
      
372
373
374 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 372
def create_bin_files
  build(:bin)
end 
     | 
  
 
    
      
  
  
    #create_boot_file  ⇒ Object 
  
  
  
  
    
      
421
422
423 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 421
def create_boot_file
  template "config/boot.rb"
end 
     | 
  
 
    
      
  
  
    #create_cifiles  ⇒ Object 
  
  
  
  
    
      
398
399
400
401 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 398
def create_cifiles
  return if skip_ci?
  build(:cifiles)
end 
     | 
  
 
    
      
  
  
    #create_config_files  ⇒ Object 
  
  
  
  
    
      
403
404
405 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 403
def create_config_files
  build(:config)
end 
     | 
  
 
    
      
  
  
    #create_credentials  ⇒ Object 
  
  
  
  
    
      
416
417
418
419 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 416
def create_credentials
  build(:credentials)
  build(:credentials_diff_enroll)
end 
     | 
  
 
    
      
  
  
    #create_db_files  ⇒ Object 
  
  
  
  
    
      
430
431
432
433 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 430
def create_db_files
  return if options[:skip_active_record]
  build(:db)
end 
     | 
  
 
    
      
  
  
    #create_devcontainer_files  ⇒ Object 
  
  
  
  
    
      
472
473
474
475 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 472
def create_devcontainer_files
  return if skip_devcontainer? || options[:dummy_app]
  build(:devcontainer)
end 
     | 
  
 
    
      
  
  
    #create_dockerfiles  ⇒ Object 
  
  
  
  
    
      
388
389
390
391 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 388
def create_dockerfiles
  return if options[:skip_docker] || options[:dummy_app]
  build(:dockerfiles)
end 
     | 
  
 
    
      
  
  
    #create_lib_files  ⇒ Object 
  
  
  
  
    
      
435
436
437 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 435
def create_lib_files
  build(:lib)
end 
     | 
  
 
    
      
  
  
    #create_log_files  ⇒ Object 
  
  
  
  
    
      
439
440
441 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 439
def create_log_files
  build(:log)
end 
     | 
  
 
    
      
  
  
    #create_master_key  ⇒ Object 
  
  
  
  
    
      
412
413
414 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 412
def create_master_key
  build(:master_key)
end 
     | 
  
 
    
      
  
  
    #create_public_files  ⇒ Object 
  
  
  
  
    
      
443
444
445 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 443
def create_public_files
  build(:public_directory)
end 
     | 
  
 
    
      
  
  
    #create_root_files  ⇒ Object 
  
  
  
  
    
      
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 352
def create_root_files
  build(:readme)
  build(:rakefile)
  build(:node_version) if using_node?
  build(:ruby_version)
  build(:configru)
  unless options[:skip_git]
    build(:gitignore)
    build(:gitattributes)
  end
  build(:gemfile)
  build(:version_control)
end
     | 
  
 
    
      
  
  
    #create_rubocop_file  ⇒ Object 
  
  
  
  
    
      
393
394
395
396 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 393
def create_rubocop_file
  return if skip_rubocop?
  build(:rubocop)
end 
     | 
  
 
    
      
  
  
    #create_script_folder  ⇒ Object 
  
  
  
  
    
      
447
448
449
450 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 447
def create_script_folder
  return if options[:dummy_app]
  build(:script)
end 
     | 
  
 
    
      
  
  
    #create_storage_files  ⇒ Object 
  
  
  
  
    
      
468
469
470 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 468
def create_storage_files
  build(:storage) unless skip_storage?
end 
     | 
  
 
    
      
  
  
    #create_system_test_files  ⇒ Object 
  
  
  
  
    
      
464
465
466 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 464
def create_system_test_files
  build(:system_test) if depends_on_system_test?
end 
     | 
  
 
    
      
  
  
    #create_test_files  ⇒ Object 
  
  
  
  
    
      
460
461
462 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 460
def create_test_files
  build(:test) unless options[:skip_test]
end 
     | 
  
 
    
      
  
  
    #create_tmp_files  ⇒ Object 
  
  
  
  
    
      
452
453
454 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 452
def create_tmp_files
  build(:tmp)
end 
     | 
  
 
    
      
  
  
    #create_vendor_files  ⇒ Object 
  
  
  
  
    
      
456
457
458 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 456
def create_vendor_files
  build(:vendor)
end 
     | 
  
 
    
      
  
  
    #delete_action_cable_files_skipping_action_cable  ⇒ Object 
  
  
  
  
    
      
542
543
544
545
546 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 542
def delete_action_cable_files_skipping_action_cable
  if options[:skip_action_cable]
    remove_dir "app/javascript/channels"
  end
end
     | 
  
 
    
      
  
  
    #delete_action_mailer_files_skipping_action_mailer  ⇒ Object 
  
  
  
  
    
      
533
534
535
536
537
538
539
540 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 533
def delete_action_mailer_files_skipping_action_mailer
  if options[: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
     | 
  
 
    
      
  
  
    #delete_active_job_folder_if_skipping_active_job  ⇒ Object 
  
  
  
  
    
      
527
528
529
530
531 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 527
def delete_active_job_folder_if_skipping_active_job
  if options[:skip_active_job]
    remove_dir "app/jobs"
  end
end
     | 
  
 
    
      
  
  
    #delete_api_initializers  ⇒ Object 
  
  
  
  
    
      
554
555
556
557
558 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 554
def delete_api_initializers
  unless options[:api]
    remove_file "config/initializers/cors.rb"
  end
end
     | 
  
 
    
      
  
  
    #delete_app_assets_if_api_option  ⇒ Object 
  
  
  
  
    
      
477
478
479
480
481 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 477
def delete_app_assets_if_api_option
  if options[:api]
    remove_dir "app/assets"
  end
end
     | 
  
 
    
      
  
  
    #delete_app_helpers_if_api_option  ⇒ Object 
  
  
  
  
    
      
483
484
485
486
487
488 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 483
def delete_app_helpers_if_api_option
  if options[:api]
    remove_dir "app/helpers"
    remove_dir "test/helpers"
  end
end
     | 
  
 
    
      
  
  
    #delete_app_views_if_api_option  ⇒ Object 
  
  
  
  
    
      
490
491
492
493
494
495
496
497
498
499 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 490
def delete_app_views_if_api_option
  if options[:api]
    if options[:skip_action_mailer]
      remove_dir "app/views"
    else
      remove_file "app/views/layouts/application.html.erb"
      remove_dir  "app/views/pwa"
    end
  end
end
     | 
  
 
    
      
  
  
    #delete_application_record_skipping_active_record  ⇒ Object 
  
  
  
  
    
      
521
522
523
524
525 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 521
def delete_application_record_skipping_active_record
  if options[:skip_active_record]
    remove_file "app/models/application_record.rb"
  end
end
     | 
  
 
    
      
  
  
    #delete_assets_initializer_skipping_asset_pipeline  ⇒ Object 
  
  
  
  
    
      
513
514
515
516
517
518
519 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 513
def delete_assets_initializer_skipping_asset_pipeline
  if skip_asset_pipeline?
    remove_file "config/initializers/assets.rb"
    remove_file "app/assets/stylesheets/application.css"
    create_file "app/assets/stylesheets/application.css", "/* Application styles */\n" unless options[:api]
  end
end
     | 
  
 
    
      
  
  
    #delete_new_framework_defaults  ⇒ Object 
  
  
  
  
    
      
560
561
562
563
564 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 560
def delete_new_framework_defaults
  unless options[:update]
    remove_file "config/initializers/new_framework_defaults_#{Rails::VERSION::MAJOR}_#{Rails::VERSION::MINOR}.rb"
  end
end
     | 
  
 
    
      
  
  
    #delete_non_api_initializers_if_api_option  ⇒ Object 
  
  
  
  
    
      
548
549
550
551
552 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 548
def delete_non_api_initializers_if_api_option
  if options[:api]
    remove_file "config/initializers/content_security_policy.rb"
  end
end
     | 
  
 
    
      
  
  
    #delete_public_files_if_api_option  ⇒ Object 
  
  
  
  
    
      
501
502
503
504
505
506
507
508
509
510
511 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 501
def delete_public_files_if_api_option
  if options[:api]
    remove_file "public/400.html"
    remove_file "public/404.html"
    remove_file "public/406-unsupported-browser.html"
    remove_file "public/422.html"
    remove_file "public/500.html"
    remove_file "public/icon.png"
    remove_file "public/icon.svg"
  end
end
     | 
  
 
    
      
  
  
    #finish_template  ⇒ Object 
  
  
  
  
    
      
566
567
568 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 566
def finish_template
  build(:leftovers)
end 
     | 
  
 
    
      
  
  
    #run_after_bundle_callbacks  ⇒ Object 
  
  
  
  
    
      
580
581
582 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 580
def run_after_bundle_callbacks
  @after_bundle_callbacks.each(&:call)
end 
     | 
  
 
    
      
  
  
    #update_active_storage  ⇒ Object 
  
  
  
  
    
      
381
382
383
384
385 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 381
def update_active_storage
  unless skip_active_storage?
    rails_command "active_storage:update", inline: true
  end
end
     | 
  
 
    
      
  
  
    #update_bin_files  ⇒ Object 
  
  
  
  
    
      
376
377
378 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 376
def update_bin_files
  build(:bin_when_updating)
end 
     | 
  
 
    
      
  
  
    #update_config_files  ⇒ Object 
  
  
  
  
    
      
407
408
409 
     | 
    
      # File 'railties/lib/rails/generators/rails/app/app_generator.rb', line 407
def update_config_files
  build(:config_when_updating)
end 
     |