Skip to content

Cut current boot over to Rails 8.0 and adopt 8.0 schema format#71

Merged
JuanVqz merged 1 commit into
mainfrom
feature/rails-80-cutover
Jul 7, 2026
Merged

Cut current boot over to Rails 8.0 and adopt 8.0 schema format#71
JuanVqz merged 1 commit into
mainfrom
feature/rails-80-cutover

Conversation

@JuanVqz

@JuanVqz JuanVqz commented Jul 7, 2026

Copy link
Copy Markdown
Member

What

Rails 8.0 is now the production version, so this completes the cutover: point the current (else) boot at 8.0 as well. Both boots now resolve to Rails 8.0.5.

  • Gemfile: else branch >= 7.2.0, < 7.3.0 -> >= 8.0.0, < 8.1.0 (matches the next? branch).
  • Gemfile.lock regenerated via bundle update rails (7.2.3.1 -> 8.0.5). Gemfile.next.lock was already 8.0.5.

The dual-boot scaffold (next?, the Gemfile.next symlink, the web_next service) is kept intact so the next hop only needs to bump the next? branch. The now-identical branches are wrapped in a rubocop:disable Style/IdenticalConditionalBranches.

Schema (db/schema.rb)

Adopt the Rails 8.0 schema-dumper format:

  • ActiveRecord::Schema[7.1] -> [8.0]
  • enable_extension "plpgsql" -> "pg_catalog.plpgsql" (8.0 dumps schema-qualified extension names)

Deliberately keeps t.integer "file_file_size" rather than the bigint a fresh migrate would emit. That bigint comes from kt-paperclip's t.attachment macro (old paperclip used integer), not from Rails 8, and production's column -- created years ago under paperclip -- is still integer. Keeping integer keeps schema.rb faithful to production. A db:schema:load + dump round-trips cleanly with no churn (verified). Note: this schema is used for new/test/CI databases via schema:load; production is unaffected either way.

Verification

Host, asdf ruby 3.2.11, against Postgres 16.13:

  • db:schema:load succeeds on the 8.0-format schema; re-dump preserves integer.
  • Production boot clean -- zero deprecation warnings.
  • Suite green -- 16 runs, 52 assertions, 0 failures, 0 errors.

Rails 8.0 is now the production version, so point the current (`else`)
boot at 8.0 as well -- both boots now resolve to Rails 8.0.5. The
dual-boot scaffold (next?, Gemfile.next symlink, web_next) is kept intact
so the next hop only needs to bump the `next?` branch; the identical
branches are wrapped in a rubocop:disable for Style/IdenticalConditionalBranches.

Gemfile.lock regenerated via `bundle update rails` (7.2.3.1 -> 8.0.5);
Gemfile.next.lock was already at 8.0.5.

Adopt the Rails 8.0 schema-dumper format in db/schema.rb:
- ActiveRecord::Schema[7.1] -> [8.0]
- enable_extension "plpgsql" -> "pg_catalog.plpgsql" (8.0 dumps
  schema-qualified extension names)

Deliberately keep `t.integer "file_file_size"` rather than the `bigint`
a fresh migrate would emit. The bigint comes from kt-paperclip's
`t.attachment` macro (old paperclip used integer), not from Rails 8, and
production's column -- created years ago under paperclip -- is still
integer. Keeping integer keeps schema.rb faithful to production; a
db:schema:load + dump round-trips cleanly with no churn (verified).

Verified on the host against Postgres 16.13: schema:load succeeds,
production boots clean with zero deprecation warnings, suite green
(16 runs, 52 assertions, 0 failures, 0 errors).
@JuanVqz JuanVqz linked an issue Jul 7, 2026 that may be closed by this pull request
@JuanVqz JuanVqz merged commit 63f073c into main Jul 7, 2026
2 checks passed
@JuanVqz JuanVqz deleted the feature/rails-80-cutover branch July 7, 2026 20:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Upgrade to Rails 8.0

1 participant