# System map — rails/rails

> Canonical page: https://codevetter.com/unpack/rails/system-map

# System map — rails/rails

Scanned commit be63fd9b4449505b90038acb9d51c88c02694e7e (2026-09-21). Generated by codevetter codevetter 1.12.0 on 2026-09-22.

The repository root is a Bundler workspace plus an npm workspace, not a single application. railties/exe/rails is the user-facing executable; rails/all.rb is the full framework require list; Rails::Application#initialize! is the runtime boot boundary. Persistence and file storage sit behind adapter registries. The in-repo test entry points are Rake and each component's bin/test. Gem and npm publishing is tools/releaser, triggered by the GitHub Actions release workflow; the full suite gate documented for releases is Buildkite, whose pipeline YAML is not in this checkout.
- RAILS_VERSION is 8.2.0.alpha and rails.gemspec requires Ruby >= 3.3.1 and RubyGems >= 1.8.11, with MIT license and rubygems_mfa_required metadata. — [RAILS_VERSION](https://github.com/rails/rails/blob/be63fd9b4449505b90038acb9d51c88c02694e7e/RAILS_VERSION) [rails.gemspec#L3-L46](https://github.com/rails/rails/blob/be63fd9b4449505b90038acb9d51c88c02694e7e/rails.gemspec#L3-L46)
- The meta-gem depends on activesupport, actionpack, actionview, activemodel, activerecord, actionmailer, activejob, actioncable, activestorage, actionmailbox, actiontext, and railties, each at the same version, plus bundler >= 1.15.0. — [rails.gemspec#L31-L45](https://github.com/rails/rails/blob/be63fd9b4449505b90038acb9d51c88c02694e7e/rails.gemspec#L31-L45)
- railties/exe/rails unshifts railties/lib onto $LOAD_PATH when a sibling .git directory exists, then requires rails/cli. — [railties/exe/rails#L1-L10](https://github.com/rails/rails/blob/be63fd9b4449505b90038acb9d51c88c02694e7e/railties/exe/rails#L1-L10) [railties/lib/rails/cli.rb#L1-L21](https://github.com/rails/rails/blob/be63fd9b4449505b90038acb9d51c88c02694e7e/railties/lib/rails/cli.rb#L1-L21)
- Rails::AppLoader.exec_app walks parent directories looking for bin/rails or script/rails and execs Gem.ruby on that binstub when the file references APP_PATH or ENGINE_PATH; a Bundler-generated bin/rails prints BUNDLER_WARNING and then requires config/boot plus rails/commands. — [railties/lib/rails/app_loader.rb#L10-L76](https://github.com/rails/rails/blob/be63fd9b4449505b90038acb9d51c88c02694e7e/railties/lib/rails/app_loader.rb#L10-L76)
- In-app dispatch is railties/lib/rails/commands.rb, which maps g, d, c, s, db, r, and t onto generate, destroy, console, server, dbconsole, runner, and test, then calls Rails::Command.invoke. — [railties/lib/rails/commands.rb#L5-L18](https://github.com/rails/rails/blob/be63fd9b4449505b90038acb9d51c88c02694e7e/railties/lib/rails/commands.rb#L5-L18) [railties/lib/rails/command.rb#L55-L77](https://github.com/rails/rails/blob/be63fd9b4449505b90038acb9d51c88c02694e7e/railties/lib/rails/command.rb#L55-L77)
- rails/all.rb requires, in order, active_record/railtie, active_storage/engine, action_controller/railtie, action_view/railtie, action_mailer/railtie, active_job/railtie, action_cable/engine, action_mailbox/engine, action_text/engine, and rails/test_unit/railtie, swallowing LoadError only when the missing path is that railtie. — [railties/lib/rails/all.rb#L5-L22](https://github.com/rails/rails/blob/be63fd9b4449505b90038acb9d51c88c02694e7e/railties/lib/rails/all.rb#L5-L22)
- Rails::Application#initialize! runs Bootstrap.initializers_for, then railties_initializers, then Finisher.initializers_for, and refuses a second call. Bootstrap loads Active Support, the logger, the error reporter, the cache, and the once-autoloader; Finisher builds the middleware stack, eager-loads, adds internal routes, and enables YJIT. — [railties/lib/rails/application.rb#L470-L481](https://github.com/rails/rails/blob/be63fd9b4449505b90038acb9d51c88c02694e7e/railties/lib/rails/application.rb#L470-L481) [railties/lib/rails/application/bootstrap.rb#L13-L80](https://github.com/rails/rails/blob/be63fd9b4449505b90038acb9d51c88c02694e7e/railties/lib/rails/application/bootstrap.rb#L13-L80) [railties/lib/rails/application/finisher.rb#L49-L92](https://github.com/rails/rails/blob/be63fd9b4449505b90038acb9d51c88c02694e7e/railties/lib/rails/application/finisher.rb#L49-L92)
- DefaultMiddlewareStack#build_stack assembles HostAuthorization, optional AssumeSSL and SSL, Static, Executor, RequestId, RemoteIp, Logger, ShowExceptions, DebugExceptions, Reloader, Cookies, the configured session store, Flash, ContentSecurityPolicy, and optional ActiveRecord DatabaseSelector and ShardSelector middleware. — [railties/lib/rails/application/default_middleware_stack.rb#L14-L111](https://github.com/rails/rails/blob/be63fd9b4449505b90038acb9d51c88c02694e7e/railties/lib/rails/application/default_middleware_stack.rb#L14-L111)
- ActiveRecord.protocol_adapters maps DATABASE_URL schemes sqlite to sqlite3, mysql to mysql2, and postgres to postgresql; external adapters may replace those strings. The root Gemfile's :db group installs pg, mysql2, and trilogy, and sqlite3 is a default dependency. — [activerecord/lib/active_record.rb#L580-L606](https://github.com/rails/rails/blob/be63fd9b4449505b90038acb9d51c88c02694e7e/activerecord/lib/active_record.rb#L580-L606) [Gemfile#L147-L157](https://github.com/rails/rails/blob/be63fd9b4449505b90038acb9d51c88c02694e7e/Gemfile#L147-L157)
- ActiveStorage::Service documents Disk, GCS, S3, and Mirror. Service.configure delegates to Service::Configurator.build, which require's active_storage/service/<name>_service and instantiates the matching Service subclass. Registry#fetch memoizes built services from the YAML configuration hash. — [activestorage/lib/active_storage/service.rb#L14-L66](https://github.com/rails/rails/blob/be63fd9b4449505b90038acb9d51c88c02694e7e/activestorage/lib/active_storage/service.rb#L14-L66) [activestorage/lib/active_storage/service/configurator.rb#L7-L39](https://github.com/rails/rails/blob/be63fd9b4449505b90038acb9d51c88c02694e7e/activestorage/lib/active_storage/service/configurator.rb#L7-L39) [activestorage/lib/active_storage/service/registry.rb#L10-L23](https://github.com/rails/rails/blob/be63fd9b4449505b90038acb9d51c88c02694e7e/activestorage/lib/active_storage/service/registry.rb#L10-L23)
- Root Rakefile task test iterates Releaser::FRAMEWORKS and runs rake test in each directory; task smoke does the same except Active Record, which runs sqlite3:test. Per-adapter tasks exist for mysql2, trilogy, postgresql, sqlite3, and sqlite3_mem, plus activerecord:db:create/drop/rebuild. — [Rakefile#L10-L159](https://github.com/rails/rails/blob/be63fd9b4449505b90038acb9d51c88c02694e7e/Rakefile#L10-L159) [tools/releaser/lib/releaser.rb#L8-L22](https://github.com/rails/rails/blob/be63fd9b4449505b90038acb9d51c88c02694e7e/tools/releaser/lib/releaser.rb#L8-L22)
- Releaser::FRAMEWORKS is ordered so dependents follow dependencies, ending in railties. The release GitHub workflow checks out the repo, configures RubyGems trusted publishing and npm, bundle-installs tools/releaser, and runs bundle exec rake push. — [tools/releaser/lib/releaser.rb#L8-L22](https://github.com/rails/rails/blob/be63fd9b4449505b90038acb9d51c88c02694e7e/tools/releaser/lib/releaser.rb#L8-L22) [tools/releaser/lib/releaser.rb#L185](https://github.com/rails/rails/blob/be63fd9b4449505b90038acb9d51c88c02694e7e/tools/releaser/lib/releaser.rb#L185) [ .github/workflows/release.yml#L1-L41](https://github.com/rails/rails/blob/be63fd9b4449505b90038acb9d51c88c02694e7e/%20.github/workflows/release.yml#L1-L41)
- package.json is a private npm workspace of actioncable, actiontext, and activestorage. @rails/actioncable, @rails/actiontext, and @rails/activestorage are versioned 8.2.0-alpha, matching RAILS_VERSION. — [package.json](https://github.com/rails/rails/blob/be63fd9b4449505b90038acb9d51c88c02694e7e/package.json) [actioncable/package.json#L1-L5](https://github.com/rails/rails/blob/be63fd9b4449505b90038acb9d51c88c02694e7e/actioncable/package.json#L1-L5) [RAILS_VERSION](https://github.com/rails/rails/blob/be63fd9b4449505b90038acb9d51c88c02694e7e/RAILS_VERSION)
- RELEASING_RAILS.md tells releasers to treat https://buildkite.com/rails/rails as the CI status and not to release on red CI. This checkout has no .buildkite directory; the GitHub workflows that do exist cover release publishing, a rails-new Docker smoke, rail_inspector, markdown, devcontainer, labeling, and staleness. — [RELEASING_RAILS.md#L12-L18](https://github.com/rails/rails/blob/be63fd9b4449505b90038acb9d51c88c02694e7e/RELEASING_RAILS.md#L12-L18) [CONTRIBUTING.md#L1](https://github.com/rails/rails/blob/be63fd9b4449505b90038acb9d51c88c02694e7e/CONTRIBUTING.md#L1) [ .github/workflows/rails-new-docker.yml#L1-L15](https://github.com/rails/rails/blob/be63fd9b4449505b90038acb9d51c88c02694e7e/%20.github/workflows/rails-new-docker.yml#L1-L15) [ .github/workflows/rail_inspector.yml#L1-L26](https://github.com/rails/rails/blob/be63fd9b4449505b90038acb9d51c88c02694e7e/%20.github/workflows/rail_inspector.yml#L1-L26)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
