class Rails::AppBuilder
The application builder allows you to override elements of the application generator without being forced to reverse the operations of the default generator.
This allows you to override entire operations, like the creation of the Gemfile, README, or JavaScript files, without needing to know exactly what those operations do so you can create another template action.
class CustomAppBuilder < Rails::AppBuilder def test @generator.gem "rspec-rails", group: [:development, :test] run "bundle install" generate "rspec:install" end end
Public Instance Methods
# File railties/lib/rails/generators/rails/app/app_generator.rb, line 91 def app directory "app" empty_directory_with_keep_file "app/assets/images" keep_file "app/controllers/concerns" keep_file "app/models/concerns" end
# File railties/lib/rails/generators/rails/app/app_generator.rb, line 100 def bin directory "bin" do |content| "#{shebang}\n" + content end chmod "bin", 0755 & ~File.umask, verbose: false end
# File railties/lib/rails/generators/rails/app/app_generator.rb, line 107 def bin_when_updating bin end
# File railties/lib/rails/generators/rails/app/app_generator.rb, line 111 def config empty_directory "config" inside "config" do template "routes.rb" unless options[:update] template "application.rb" template "environment.rb" template "cable.yml" unless options[:update] || options[:skip_action_cable] template "puma.rb" unless options[:update] template "storage.yml" unless options[:update] || skip_active_storage? directory "environments" directory "initializers" directory "locales" unless options[:update] end end
# File railties/lib/rails/generators/rails/app/app_generator.rb, line 257 def config_target_version defined?(@config_target_version) ? @config_target_version : Rails::VERSION::STRING.to_f end
# File railties/lib/rails/generators/rails/app/app_generator.rb, line 128 def config_when_updating action_cable_config_exist = File.exist?("config/cable.yml") active_storage_config_exist = File.exist?("config/storage.yml") rack_cors_config_exist = File.exist?("config/initializers/cors.rb") assets_config_exist = File.exist?("config/initializers/assets.rb") asset_manifest_exist = File.exist?("app/assets/config/manifest.js") asset_app_stylesheet_exist = File.exist?("app/assets/stylesheets/application.css") csp_config_exist = File.exist?("config/initializers/content_security_policy.rb") permissions_policy_config_exist = File.exist?("config/initializers/permissions_policy.rb") @config_target_version = Rails.application.config.loaded_config_version || "5.0" config if !options[:skip_action_cable] && !action_cable_config_exist template "config/cable.yml" end if !skip_active_storage? && !active_storage_config_exist template "config/storage.yml" end if skip_sprockets? && skip_propshaft? && !assets_config_exist remove_file "config/initializers/assets.rb" end if skip_sprockets? && !asset_manifest_exist remove_file "app/assets/config/manifest.js" end if skip_sprockets? && !asset_app_stylesheet_exist remove_file "app/assets/stylesheets/application.css" end unless rack_cors_config_exist remove_file "config/initializers/cors.rb" end if options[:api] unless csp_config_exist remove_file "config/initializers/content_security_policy.rb" end unless permissions_policy_config_exist remove_file "config/initializers/permissions_policy.rb" end end end
# File railties/lib/rails/generators/rails/app/app_generator.rb, line 65 def configru template "config.ru" end
# File railties/lib/rails/generators/rails/app/app_generator.rb, line 186 def credentials return if options[:pretend] || options[:dummy_app] require "rails/generators/rails/credentials/credentials_generator" Rails::Generators::CredentialsGenerator.new([], quiet: true).add_credentials_file end
# File railties/lib/rails/generators/rails/app/app_generator.rb, line 193 def credentials_diff_enroll return if options[:skip_decrypted_diffs] || options[:dummy_app] || options[:pretend] @generator.shell.mute do rails_command "credentials:diff --enroll", inline: true, shell: @generator.shell end end
# File railties/lib/rails/generators/rails/app/app_generator.rb, line 201 def database_yml template "config/databases/#{options[:database]}.yml", "config/database.yml" end
# File railties/lib/rails/generators/rails/app/app_generator.rb, line 205 def db directory "db" end
# File railties/lib/rails/generators/rails/app/app_generator.rb, line 77 def dockerfiles template "Dockerfile" template "dockerignore", ".dockerignore" template "docker-entrypoint", "bin/docker-entrypoint" chmod "bin/docker-entrypoint", 0755 & ~File.umask, verbose: false end
# File railties/lib/rails/generators/rails/app/app_generator.rb, line 61 def gemfile template "Gemfile" end
# File railties/lib/rails/generators/rails/app/app_generator.rb, line 73 def gitattributes template "gitattributes", ".gitattributes" end
# File railties/lib/rails/generators/rails/app/app_generator.rb, line 69 def gitignore template "gitignore", ".gitignore" end
# File railties/lib/rails/generators/rails/app/app_generator.rb, line 209 def lib empty_directory "lib" empty_directory_with_keep_file "lib/tasks" empty_directory_with_keep_file "lib/assets" end
# File railties/lib/rails/generators/rails/app/app_generator.rb, line 215 def log empty_directory_with_keep_file "log" end
# File railties/lib/rails/generators/rails/app/app_generator.rb, line 177 def master_key return if options[:pretend] || options[:dummy_app] require "rails/generators/rails/master_key/master_key_generator" master_key_generator = Rails::Generators::MasterKeyGenerator.new([], quiet: options[:quiet], force: options[:force]) master_key_generator.add_master_key_file_silently master_key_generator.ignore_master_key_file_silently end
# File railties/lib/rails/generators/rails/app/app_generator.rb, line 57 def node_version template "node-version", ".node-version" end
# File railties/lib/rails/generators/rails/app/app_generator.rb, line 219 def public_directory directory "public", "public", recursive: false end
# File railties/lib/rails/generators/rails/app/app_generator.rb, line 45 def rakefile template "Rakefile" end
# File railties/lib/rails/generators/rails/app/app_generator.rb, line 49 def readme copy_file "README.md", "README.md" end
# File railties/lib/rails/generators/rails/app/app_generator.rb, line 53 def ruby_version template "ruby-version", ".ruby-version" end
# File railties/lib/rails/generators/rails/app/app_generator.rb, line 223 def storage empty_directory_with_keep_file "storage" empty_directory_with_keep_file "tmp/storage" end
# File railties/lib/rails/generators/rails/app/app_generator.rb, line 240 def system_test empty_directory_with_keep_file "test/system" template "test/application_system_test_case.rb" end
# File railties/lib/rails/generators/rails/app/app_generator.rb, line 228 def test empty_directory_with_keep_file "test/fixtures/files" empty_directory_with_keep_file "test/controllers" empty_directory_with_keep_file "test/mailers" empty_directory_with_keep_file "test/models" empty_directory_with_keep_file "test/helpers" empty_directory_with_keep_file "test/integration" template "test/channels/application_cable/connection_test.rb" template "test/test_helper.rb" end
# File railties/lib/rails/generators/rails/app/app_generator.rb, line 246 def tmp empty_directory_with_keep_file "tmp" empty_directory_with_keep_file "tmp/pids" empty_directory "tmp/cache" empty_directory "tmp/cache/assets" end
# File railties/lib/rails/generators/rails/app/app_generator.rb, line 253 def vendor empty_directory_with_keep_file "vendor" end
# File railties/lib/rails/generators/rails/app/app_generator.rb, line 85 def version_control if !options[:skip_git] && !options[:pretend] run git_init_command, capture: options[:quiet], abort_on_failure: false end end