Skip to content

Add Rails 8.1 support#116

Merged
patbenatar merged 16 commits intomasterfrom
rails8
Apr 6, 2026
Merged

Add Rails 8.1 support#116
patbenatar merged 16 commits intomasterfrom
rails8

Conversation

@patbenatar
Copy link
Copy Markdown
Owner

@patbenatar patbenatar commented Apr 5, 2026

Summary

  • Bumped activesupport, actionview, and rails upper bounds from < 7.3 to < 8.2
  • Added explicit require "ostruct" — no longer auto-loaded in newer Ruby/Rails
  • Filtered lazy_route_set.rb frames from component backtraces (new internal frame in Rails 8.1)
  • Added Rails 8.1 appraisal
  • Updated Dockerfile to Ruby 3.3.5

patbenatar and others added 6 commits April 5, 2026 14:34
- Bump activesupport, actionview, and rails upper bounds from < 7.3 to < 8.2
- Add explicit `require "ostruct"` (no longer auto-loaded in newer Ruby/Rails)
- Filter `lazy_route_set.rb` frames from component backtraces (new in Rails 8.1)
- Add Rails 8.1 appraisal
- Update Dockerfile to Ruby 3.3.5

All 162 specs pass against Rails 8.1.3.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add rails_7_2 and rails_8_1 to CI test matrix
- Regenerate all appraisal lockfiles with updated gemspec bounds

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
CI runs on x86_64-linux, but lockfiles were generated on
aarch64-linux only.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Bump minimum Rails to >= 7.0 (was >= 6)
- Bump minimum Ruby to >= 3.2 (was >= 3.1, which is EOL)
- Remove Rails 6.x code paths in ComponentTemplateResolver
- Remove Rails 6.1 appraisal and CI matrix entry
- Remove Ruby 3.1 from CI matrix
- Pin sqlite3 ~> 1.4 for Rails 7.0 appraisal (7.0 incompatible with sqlite3 2.x)
- Regenerate all lockfiles

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Rails 8.1 changed ERBTracker#render_dependencies to only scan for
render calls inside <%= %> delimiters. Rbexy uses {expr} syntax,
so render calls in .rbx templates were no longer detected.

Subclass ERBTracker instead of delegating to it, overriding only
render_dependencies to scan for render calls inside both {expr}
and <%= %> delimiters. This preserves ERBTracker's explicit_dependencies,
WildcardResolver, and argument parsing (RENDER_ARGUMENTS, LAYOUT_DEPENDENCY).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
patbenatar and others added 2 commits April 5, 2026 15:32
Rails master (8.2.alpha) requires Ruby >= 3.3.1.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Rails master is a moving target and breaks frequently due to
upstream alpha changes unrelated to Rbexy.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
patbenatar and others added 7 commits April 5, 2026 15:35
- Bump minimum Ruby to >= 3.3.0
- CI matrix now tests Ruby 3.3, 3.4, 4.0

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Ruby 3.4 and 4.0 have test failures that need separate investigation.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Rails 8.1 added @view_context.safe_join calls in TagBuilder#tag_options
for array-valued class and aria attributes. Runtime.tag_builder was
passing nil as the view_context, causing NoMethodError.

Pass a Runtime instance as the view_context instead — it includes
ActionView::Helpers::TagHelper which provides safe_join.

Added regression test: nested components with array class splat attrs.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@patbenatar patbenatar merged commit 98254eb into master Apr 6, 2026
10 checks passed
@patbenatar patbenatar deleted the rails8 branch April 6, 2026 00:24
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.

1 participant