Module: CreateRailsApp::Options::Catalog
- Defined in:
- lib/create_rails_app/options/catalog.rb
Overview
Registry of every rails new option create-rails-app knows about.
Each entry in DEFINITIONS describes the option’s type and CLI flags. ORDER controls the sequence in which the wizard presents options.
Constant Summary collapse
- BASE_DATABASE_VALUES =
Option definitions keyed by symbolic name.
Types:
-
:flag— opt-in; emits--flagwhen true, nothing when false -
:enum— emits –flag=value;:noneflag emits--skip-flag -
:skip— opt-out; emits nothing when true (include),--skip-Xwhen false (exclude)
Database adapters shared across all Rails versions.
-
%w[sqlite3 postgresql mysql trilogy].freeze
- MARIADB_DATABASE_VALUES =
Database adapters added in Rails 8.0+.
%w[mariadb-mysql mariadb-trilogy].freeze
- DEFINITIONS =
{ # Flags (opt-in) api: { type: :flag, on: '--api' }.freeze, # Enums database: { type: :enum, flag: '--database', values: (BASE_DATABASE_VALUES + MARIADB_DATABASE_VALUES).freeze }.freeze, javascript: { type: :enum, flag: '--javascript', none: '--skip-javascript', values: %w[importmap bun webpack esbuild rollup].freeze }.freeze, css: { type: :enum, flag: '--css', none: true, values: %w[tailwind bootstrap bulma postcss sass].freeze, rails_default: 'none' }.freeze, asset_pipeline: { type: :enum, flag: '--asset-pipeline', none: '--skip-asset-pipeline', values: %w[propshaft sprockets].freeze, rails_default: 'sprockets' }.freeze, # Skip (included by default, --skip-X to exclude) active_record: { type: :skip, skip_flag: '--skip-active-record' }.freeze, action_mailer: { type: :skip, skip_flag: '--skip-action-mailer' }.freeze, action_mailbox: { type: :skip, skip_flag: '--skip-action-mailbox' }.freeze, action_text: { type: :skip, skip_flag: '--skip-action-text' }.freeze, active_job: { type: :skip, skip_flag: '--skip-active-job' }.freeze, active_storage: { type: :skip, skip_flag: '--skip-active-storage' }.freeze, action_cable: { type: :skip, skip_flag: '--skip-action-cable' }.freeze, hotwire: { type: :skip, skip_flag: '--skip-hotwire' }.freeze, jbuilder: { type: :skip, skip_flag: '--skip-jbuilder' }.freeze, test: { type: :skip, skip_flag: '--skip-test' }.freeze, system_test: { type: :skip, skip_flag: '--skip-system-test' }.freeze, brakeman: { type: :skip, skip_flag: '--skip-brakeman' }.freeze, bundler_audit: { type: :skip, skip_flag: '--skip-bundler-audit' }.freeze, rubocop: { type: :skip, skip_flag: '--skip-rubocop' }.freeze, ci: { type: :skip, skip_flag: '--skip-ci' }.freeze, docker: { type: :skip, skip_flag: '--skip-docker' }.freeze, kamal: { type: :skip, skip_flag: '--skip-kamal' }.freeze, thruster: { type: :skip, skip_flag: '--skip-thruster' }.freeze, solid: { type: :skip, skip_flag: '--skip-solid' }.freeze, devcontainer: { type: :flag, on: '--devcontainer' }.freeze, bootsnap: { type: :skip, skip_flag: '--skip-bootsnap' }.freeze, dev_gems: { type: :skip, skip_flag: '--skip-dev-gems' }.freeze, keeps: { type: :skip, skip_flag: '--skip-keeps' }.freeze, decrypted_diffs: { type: :skip, skip_flag: '--skip-decrypted-diffs' }.freeze, git: { type: :skip, skip_flag: '--skip-git' }.freeze, bundle: { type: :skip, skip_flag: '--skip-bundle' }.freeze }.freeze
- ORDER =
Wizard step order — matches the sequence users see.
Phase 1: Core architecture (flags + enums + active_record) Phase 2: Skip options with auto-skip consequences + dependents Phase 3: Independent skips + devcontainer flag
i[ api active_record database javascript css asset_pipeline test system_test hotwire jbuilder action_mailbox action_text active_storage devcontainer action_mailer active_job action_cable brakeman bundler_audit rubocop ci docker kamal thruster solid bootsnap dev_gems keeps decrypted_diffs git bundle ].freeze
Class Method Summary collapse
-
.fetch(key) ⇒ Hash
Fetches the definition for a given option key.
Class Method Details
.fetch(key) ⇒ Hash
Fetches the definition for a given option key.
115 116 117 |
# File 'lib/create_rails_app/options/catalog.rb', line 115 def self.fetch(key) DEFINITIONS.fetch(key.to_sym) end |