跳至内容 跳至搜索

应用程序生成器允许您覆盖应用程序生成器的元素,而无需强制您反转默认生成器的操作。

这使您可以覆盖整个操作,例如创建 Gemfile、README 或 JavaScript 文件,而无需了解这些操作的具体内容,以便您可以创建另一个模板操作。

class CustomAppBuilder < Rails::AppBuilder
  def test
    @generator.gem "rspec-rails", group: [:development, :test]
    run "bundle install"
    generate "rspec:install"
  end
end
方法
A
B
C
D
G
L
M
N
P
R
S
T
V

实例公共方法

app()

# File railties/lib/rails/generators/rails/app/app_generator.rb, line 102
def app
  directory "app"

  empty_directory_with_keep_file "app/assets/images"

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

bin()

# File railties/lib/rails/generators/rails/app/app_generator.rb, line 111
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

bin_when_updating()

# File railties/lib/rails/generators/rails/app/app_generator.rb, line 119
def bin_when_updating
  bin
end

cifiles()

# File railties/lib/rails/generators/rails/app/app_generator.rb, line 86
def cifiles
  empty_directory ".github/workflows"
  template "github/ci.yml", ".github/workflows/ci.yml"
  template "github/dependabot.yml", ".github/dependabot.yml"
end

config()

# File railties/lib/rails/generators/rails/app/app_generator.rb, line 123
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

config_target_version()

# File railties/lib/rails/generators/rails/app/app_generator.rb, line 261
def config_target_version
  @config_target_version || Rails::VERSION::STRING.to_f
end

config_when_updating()

# File railties/lib/rails/generators/rails/app/app_generator.rb, line 140
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

configru()

# File railties/lib/rails/generators/rails/app/app_generator.rb, line 66
def configru
  template "config.ru"
end

credentials()

# File railties/lib/rails/generators/rails/app/app_generator.rb, line 188
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

credentials_diff_enroll()

# File railties/lib/rails/generators/rails/app/app_generator.rb, line 195
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

database_yml()

# File railties/lib/rails/generators/rails/app/app_generator.rb, line 203
def database_yml
  template database.template, "config/database.yml"
end

db()

# File railties/lib/rails/generators/rails/app/app_generator.rb, line 207
def db
  directory "db"
end

devcontainer()

# File railties/lib/rails/generators/rails/app/app_generator.rb, line 265
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

dockerfiles()

# File railties/lib/rails/generators/rails/app/app_generator.rb, line 78
def dockerfiles
  template "Dockerfile"
  template "dockerignore", ".dockerignore"

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

gemfile()

# File railties/lib/rails/generators/rails/app/app_generator.rb, line 62
def gemfile
  template "Gemfile"
end

gitattributes()

# File railties/lib/rails/generators/rails/app/app_generator.rb, line 74
def gitattributes
  template "gitattributes", ".gitattributes"
end

gitignore()

# File railties/lib/rails/generators/rails/app/app_generator.rb, line 70
def gitignore
  template "gitignore", ".gitignore"
end

lib()

# File railties/lib/rails/generators/rails/app/app_generator.rb, line 211
def lib
  empty_directory "lib"
  empty_directory_with_keep_file "lib/tasks"
end

log()

# File railties/lib/rails/generators/rails/app/app_generator.rb, line 216
def log
  empty_directory_with_keep_file "log"
end

master_key()

# File railties/lib/rails/generators/rails/app/app_generator.rb, line 179
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

node_version()

# File railties/lib/rails/generators/rails/app/app_generator.rb, line 58
def node_version
  template "node-version", ".node-version"
end

public_directory()

# File railties/lib/rails/generators/rails/app/app_generator.rb, line 220
def public_directory
  return if options[:update] && options[:api]

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

rakefile()

# File railties/lib/rails/generators/rails/app/app_generator.rb, line 46
def rakefile
  template "Rakefile"
end

readme()

# File railties/lib/rails/generators/rails/app/app_generator.rb, line 50
def readme
  copy_file "README.md", "README.md"
end

rubocop()

# File railties/lib/rails/generators/rails/app/app_generator.rb, line 92
def rubocop
  template "rubocop.yml", ".rubocop.yml"
end

ruby_version()

# File railties/lib/rails/generators/rails/app/app_generator.rb, line 54
def ruby_version
  template "ruby-version", ".ruby-version"
end

script()

# File railties/lib/rails/generators/rails/app/app_generator.rb, line 226
def script
  empty_directory_with_keep_file "script"
end

storage()

# File railties/lib/rails/generators/rails/app/app_generator.rb, line 230
def storage
  empty_directory_with_keep_file "storage"
  empty_directory_with_keep_file "tmp/storage"
end

system_test()

# File railties/lib/rails/generators/rails/app/app_generator.rb, line 246
def system_test
  empty_directory_with_keep_file "test/system"

  template "test/application_system_test_case.rb"
end

test()

# File railties/lib/rails/generators/rails/app/app_generator.rb, line 235
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

tmp()

# File railties/lib/rails/generators/rails/app/app_generator.rb, line 252
def tmp
  empty_directory_with_keep_file "tmp"
  empty_directory_with_keep_file "tmp/pids"
end

vendor()

# File railties/lib/rails/generators/rails/app/app_generator.rb, line 257
def vendor
  empty_directory_with_keep_file "vendor"
end

version_control()

# File railties/lib/rails/generators/rails/app/app_generator.rb, line 96
def version_control
  if !options[:skip_git] && !options[:pretend]
    run git_init_command, capture: options[:quiet], abort_on_failure: false
  end
end