What rails/rails shipped
Written by FoxPlug from the repository's own releases; not affiliated with Ruby on Rails. Paste your own repository in the box below and FoxPlug writes the same weekly update for your product. This page is an automatic summary of the releases, pull requests and commits in github.com/rails/rails; Ruby on Rails did not write it and does not use or endorse FoxPlug. Every line links to the change it describes.
Get a weekly update like this for your product, free
Week of October 5, 2026
What shipped
- String#blank? now scans bytes instead of running a regular expression, making this widely used check faster. Pull request #58745
- String#blank? got another speedup by avoiding repeated bytesize calls. Pull request #59030
- Range conditions on single-mapping
composed_ofaggregations no longer generate BETWEEN NULL AND NULL and now match rows. Pull request #59013 - Structured event logging at the default info level is faster on every request. Pull request #58964
- CSRF failure warnings are logged at warn level so they are no longer dropped when
log_levelis set to warn. Pull request #58991 - Rails.event now receives rails.deprecation structured events when deprecation behavior is set to notify. Pull request #58992
- Requests with Accept: */* reuse a frozen Mime::Type instead of building a new one each time. Pull request #58961
- Rails test with -q no longer suppresses failure output. Pull request #58999
- Streaming with ActionController::Live no longer modifies a
connected_tostack shared with another thread. Pull request #58881 - Has_one_attached and
has_many_attachednow forward additional association options to their generated associations. Pull request #58860
Why it matters
This week brought measurable performance work to two very common paths: String? and structured event logging on every request. It also fixed several correctness issues that users could hit, including CSRF warnings being silently dropped and connected_to state shared across threads in streaming. A batch of documentation fixes corrected broken links and inaccurate examples across the guides.
Changelog entry
- Speed up String#blank? by scanning bytes instead of running a regular expression. Pull request #58745
- Speed up String#blank? further by avoiding repeated bytesize calls. Pull request #59030
- Fix Range conditions on single-mapping
composed_ofaggregations so they no longer generate BETWEEN NULL AND NULL. Pull request #59013 - Speed up structured event logging at the default info level. Pull request #58964
- Log CSRF failure warnings at warn level so they appear when
log_levelis set to warn. Pull request #58991 - Emit rails.deprecation structured events to Rails.event when deprecation behavior is set to notify. Pull request #58992
- Reuse a frozen Mime::Type when looking up */*. Pull request #58961
- Show summary and failure output when rails test is run with -q or --quiet. Pull request #58999
- Don't modify a
connected_tostack shared with another thread when using ActionController::Live. Pull request #58881 - Forward additional association options from
has_one_attachedandhas_many_attached. Pull request #58860 - Make TimeZone.all and offset lookups work in non-main Ractors. Pull request #58976
- File.atomic_write now cleans up the temporary file when the rename fails. Pull request #58972
This week: String? got faster by scanning bytes, structured event logging is quicker at info level, CSRF warnings now actually log at warn level, and rails test -q shows failures again. Plus many guide fixes and smaller correctness improvements across Active Record, Active Storag
This week in Rails focused on performance and correctness. String? became faster by scanning bytes instead of running a regular expression, with a follow-up that avoids repeated bytesize calls. Structured event logging at the default info level was sped up for every request, and requests sending Accept: */* now reuse a frozen Mime::Type. On the correctness side, CSRF failure warnings are logged at warn level so they are no longer silently dropped, rails test with -q shows failure output again, and streaming with ActionController::Live no longer modifies a connected_to stack shared with another thread. Range conditions on single-mapping composed_of aggregations now match rows, and Rails.event receives rails.deprecation structured events when deprecation behavior is set to notify. Active Sto
Week of September 28, 2026
What shipped
- Dynamic controller and action segments in routes are no longer supported, completing a deprecation from Rails 5.0. Pull request #58893
- ActiveSupport::EventReporter now freezes event hashes passed to subscribers to prevent subscription-order-dependent mutations. Pull request #58913
- Before-commit callbacks that raise rollback errors now properly trigger transaction rollback instead of skipping it. Pull request #58289
- ActiveSupport::ParameterFilter instances are cached across requests to avoid repeated regex compilation overhead. Pull request #58680
- Arel node equality now includes state that affects SQL generation for Matches, DoesNotMatch, and other node types. Pull request #58813
- JSON escaping now uses String#tr! with a Hash for single-pass UTF-8 substitution without regex. Pull request #58746
- Collection radio buttons and checkboxes now generate matching input id and label for attributes when values are empty strings. Pull request #58892
- ActiveRecord::Result no longer reprocesses column names for string interning, now handled in database adapters. Pull request #58898
- Dead code for Ruby versions before 3.3.5 removed to enable non-Thread/Fiber keys in maps for query cache performance. Pull request #58918
- Documentation clarified to specify that reload resets attribute values and associated state while custom attributes survive. Pull request #58929
Why it matters
This week includes removal of deprecated routing features and cleanup for newer Ruby minimum versions, along with bug fixes in transactions, form helpers, and equality checks. Performance improvements landed in parameter filtering, JSON escaping, and result processing. Several documentation corrections ensure guides match actual behavior.
Changelog entry
- Remove support for dynamic controller/action in routes. Use explicit route definitions instead. Pull request #58893
- ActiveSupport::EventReporter freezes event hashes to prevent subscriber mutation affecting other subscribers. Pull request #58913
- Before-commit callbacks raising rollback errors now properly rollback transactions. Pull request #58289
- Cache ActiveSupport::ParameterFilter instances to avoid regex compilation on every request. Pull request #58680
- Fix Arel node equality to include escape and
case_sensitivestate. Pull request #58813 - JSON escaping now uses String#tr! for improved performance. Pull request #58746
- Fix
collection_radio_buttonsandcollection_check_boxeslabel for attribute with empty string values. Pull request #58892 - Remove Ruby < 3.3.5 compatibility code. Pull request #58918
- Remove Ruby < 3.3.1 compatibility code. Pull request #58917
- Fix IndexedRow lookups when columns are not unique. Pull request #58896
Rails this week: dynamic controller/action routes removed, event hashes frozen against mutation, before-commit rollbacks fixed, and performance improvements in parameter filtering and JSON escaping.
Rails 8.2 development continues with completion of long-standing deprecations. Dynamic controller/action route segments are removed after years of notice. Event hashing is now mutation-safe, before-commit callbacks handle rollbacks correctly, and parameter filtering avoids regex recompilation on every request. Performance work reduces allocations in JSON escaping and result processing.
Week of September 21, 2026
What shipped
- Rails 7.2.4 released with improved
number_to_delimitedperformance, fixed Dalli cache store warnings, and improved humanize handling for international characters. Release - Rails 8.1.4 released with fixes for SyntaxError rendering, JSON 3.0 compatibility, and support for petabyte and larger file sizes in
number_to_human_size. Release - Active Record now supports Ractor-friendly connection handling for querying in non-main ractors in ractorized Rails applications. Pull request #58306
- Framework default added to compile HTML+ERB templates through Herb instead of ERB via config.action_view.erb_implementation. Pull request #58721
- Fixed BigInteger casting that was truncating strings to 16 bytes when no limit was specified. Pull request #58872
- Fixed error matching for validations using
except_onso errors.added? correctly returns true for present errors. Pull request #58876 - Fixed database configuration to treat false as disabled for
idle_timeout,reaping_frequencyandmax_ageinstead of raising NoMethodError. Pull request #58807 - PostgreSQL schema dumps now skip extension member tables, enum types and schemas to avoid duplicating database objects. Pull request #58878
- Fixed ActionDispatch::ServerTiming header double-counting duration for nested same-name events. Pull request #58800
- Added Manitoba time zone mapping since it no longer shares winter clocks with US Central time. Pull request #58863
Why it matters
Two stable releases ship with multiple bug fixes and improved compatibility with upcoming dependencies. New Ractor support and Herb template compilation add capabilities for modern Ruby applications. Schema handling and validation improvements address common database and data integrity issues.
Changelog entry
- 7.2.4: Improve
number_to_delimitedperformance; silence Dalli 4.0+ warnings in MemCacheStore; fix Inflector.humanize with international characters Release - 8.1.4: Fix SyntaxError rendering on debug page; ensure JSON 3.0 gem compatibility; support petabyte+ sizes in
number_to_human_sizeRelease - Active Record Ractor-friendly connection handling for non-main ractor queries Pull request #58306
- Framework default to compile HTML+ERB templates through Herb Pull request #58721
- Fix BigInteger casting truncating strings to 16 bytes Pull request #58872
- Fix errors.added? for validations using
except_onPull request #58876 - Treat false as disabled for
idle_timeout,reaping_frequency,max_agein database.yml Pull request #58807 - Skip PostgreSQL extension tables, enum types and schemas in Ruby schema dump Pull request #58878
- Fix Server-Timing header double-counting nested same-name event duration Pull request #58800
- Add Manitoba time zone mapping Pull request #58863
Rails 7.2.4 and 8.1.4 are out with bug fixes, improved performance, and better compatibility. New Ractor support for parallel queries and Herb template compilation framework default also shipping.
Rails 7.2.4 and 8.1.4 releases bring multiple improvements: better number formatting performance, JSON 3.0 compatibility, support for petabyte-sized files, and bug fixes across validation and database handling. Additionally, Active Record now supports Ractor-friendly connections for parallel query execution, and HTML+ERB templates can compile through Herb by default, enabling better template security.