跳到內容 跳到搜尋

應用程式建置器允許您覆寫應用程式產生器的元素,而無需強制還原預設產生器的操作。

這允許您覆寫整個操作,例如 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 91
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 100
def bin
  directory "bin" 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 107
def bin_when_updating
  bin
end

config()

# 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

config_target_version()

# 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

config_when_updating()

# 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

configru()

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

credentials()

# 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

credentials_diff_enroll()

# 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

database_yml()

# 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

db()

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

dockerfiles()

# 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

gemfile()

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

gitattributes()

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

gitignore()

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

lib()

# 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

log()

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

master_key()

# 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

node_version()

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

public_directory()

# File railties/lib/rails/generators/rails/app/app_generator.rb, line 219
def public_directory
  directory "public", "public", recursive: false
end

rakefile()

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

readme()

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

ruby_version()

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

storage()

# 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

system_test()

# 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

test()

# 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

tmp()

# 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

vendor()

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

version_control()

# 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