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
Methods
- A
- B
- C
- D
- G
- L
- M
- P
- R
- S
- T
- V
Instance Public methods
app() Link
bin() Link
bin_when_updating() Link
config() Link
# File railties/lib/rails/generators/rails/app/app_generator.rb, line 102 def config empty_directory "config" inside "config" do template "routes.rb" unless options[:updating] template "application.rb" template "environment.rb" template "cable.yml" unless options[:updating] || options[:skip_action_cable] template "puma.rb" unless options[:updating] template "storage.yml" unless options[:updating] || skip_active_storage? directory "environments" directory "initializers" directory "locales" unless options[:updating] end end
config_target_version() Link
config_when_updating() Link
# File railties/lib/rails/generators/rails/app/app_generator.rb, line 119 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 if !skip_sprockets? insert_into_file "config/application.rb", %(require "sprockets/railtie"), after: /require\(["']rails\/all["']\)\n/ end end
configru() Link
credentials() Link
# File railties/lib/rails/generators/rails/app/app_generator.rb, line 181 def credentials return if options[:pretend] || options[:dummy_app] require "rails/generators/rails/credentials/credentials_generator" Rails::Generators::CredentialsGenerator.new([], quiet: options[:quiet]).add_credentials_file_silently end
database_yml() Link
db() Link
db_when_updating() Link
# File railties/lib/rails/generators/rails/app/app_generator.rb, line 196 def db_when_updating path = File.expand_path("db/schema.rb", destination_root) if File.exist?(path) gsub_file("db/schema.rb", /ActiveRecord::Schema\.define/, "ActiveRecord::Schema[6.1].define") end end
gemfile() Link
gitattributes() Link
gitignore() Link
lib() Link
log() Link
master_key() Link
# File railties/lib/rails/generators/rails/app/app_generator.rb, line 172 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
public_directory() Link
rakefile() Link
readme() Link
ruby_version() Link
storage() Link
system_test() Link
test() Link
# File railties/lib/rails/generators/rails/app/app_generator.rb, line 223 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
tmp() Link
vendor() Link
version_control() Link
# File railties/lib/rails/generators/rails/app/app_generator.rb, line 73 def version_control if !options[:skip_git] && !options[:pretend] run "git init", capture: options[:quiet], abort_on_failure: false if user_default_branch.strip.empty? `git symbolic-ref HEAD refs/heads/main` end end end