Rails::AppBuilder (original) (raw)

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

N

P

R

S

T

V

Instance Public methods

Source: show | on GitHub

def app directory "app"

empty_directory_with_keep_file "app/assets/images"

keep_file "app/controllers/concerns" keep_file "app/models/concerns" end

Source: show | on GitHub

def bin exclude_pattern = Regexp.union([(/thrust/ if skip_thruster?), (/rubocop/ if skip_rubocop?), (/brakeman/ if skip_brakeman?)].compact) directory "bin", { exclude_pattern: exclude_pattern } do |content| "#{shebang}\n" + content end chmod "bin", 0755 & ~File.umask, verbose: false end

Source: show | on GitHub

def cifiles empty_directory ".github/workflows" template "github/ci.yml", ".github/workflows/ci.yml" template "github/dependabot.yml", ".github/dependabot.yml" end

Source: show | on GitHub

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" template "storage.yml" unless options[:update] || skip_active_storage?

directory "environments"
directory "initializers"
directory "locales" unless options[:update]

end end

Source: show | on GitHub

def config_target_version @config_target_version || Rails::VERSION::STRING.to_f end

Source: show | on GitHub

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_app_stylesheet_exist = File.exist?("app/assets/stylesheets/application.css") csp_config_exist = File.exist?("config/initializers/content_security_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_asset_pipeline? && !assets_config_exist remove_file "config/initializers/assets.rb" end

if skip_asset_pipeline? && !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 end end

Source: show | on GitHub

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

Source: show | on GitHub

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

Source: show | on GitHub

def database_yml template database.template, "config/database.yml" end

Source: show | on GitHub

def devcontainer devcontainer_options = { database: options[:database], redis: options[:skip_solid] && !(options[:skip_action_cable] && options[:skip_active_job]), kamal: !options[:skip_kamal], system_test: depends_on_system_test?, active_storage: !options[:skip_active_storage], dev: options[:dev], node: using_node?, app_name: app_name, skip_solid: options[:skip_solid] }

Rails::Generators::DevcontainerGenerator.new([], devcontainer_options).invoke_all end

Source: show | on GitHub

def dockerfiles template "Dockerfile" template "dockerignore", ".dockerignore"

template "docker-entrypoint", "bin/docker-entrypoint" chmod "bin/docker-entrypoint", 0755 & ~File.umask, verbose: false end

Source: show | on GitHub

def gitattributes template "gitattributes", ".gitattributes" end

Source: show | on GitHub

def gitignore template "gitignore", ".gitignore" end

Source: show | on GitHub

def lib empty_directory "lib" empty_directory_with_keep_file "lib/tasks" end

Source: show | on GitHub

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

Source: show | on GitHub

def node_version template "node-version", ".node-version" end

Source: show | on GitHub

def public_directory return if options[:update] && options[:api]

directory "public", "public", recursive: false end

Source: show | on GitHub

def readme copy_file "README.md", "README.md" end

Source: show | on GitHub

def rubocop template "rubocop.yml", ".rubocop.yml" end

Source: show | on GitHub

def ruby_version template "ruby-version", ".ruby-version" end

Source: show | on GitHub

def script empty_directory_with_keep_file "script" end

Source: show | on GitHub

def storage empty_directory_with_keep_file "storage" empty_directory_with_keep_file "tmp/storage" end

Source: show | on GitHub

def system_test empty_directory_with_keep_file "test/system"

template "test/application_system_test_case.rb" end

Source: show | on GitHub

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/test_helper.rb" end

Source: show | on GitHub

def tmp empty_directory_with_keep_file "tmp" empty_directory_with_keep_file "tmp/pids" end

Source: show | on GitHub

def vendor empty_directory_with_keep_file "vendor" end

Source: show | on GitHub

def version_control if !options[:skip_git] && !options[:pretend] run git_init_command, capture: options[:quiet], abort_on_failure: false end end