Rails 8.0.3 (September 22, 2025)¶ ↑
-
ActiveSupport::FileUpdateCheckerdoes not depend onTime.nowto prevent unnecessary reloads with time travel test helpersJan Grodowski
-
Fix
ActiveSupport::BroadcastLoggerfrom executing a block argument for each logger (tagged, info, etc.).Jared Armstrong
-
Make
ActiveSupport::Loggerfreeze-friendly.Joshua Young
-
Fix
ActiveSupport::HashWithIndifferentAccess#transform_keys!removing defaults.Hartley McGuire
-
Fix
ActiveSupport::HashWithIndifferentAccess#tranform_keys!to handle collisions.If the transformation would result in a key equal to another not yet transformed one, it would result in keys being lost.
Before:
>> {a: 1, b: 2}.with_indifferent_access.transform_keys!(&:succ) => {"c" => 1}
After:
>> {a: 1, b: 2}.with_indifferent_access.transform_keys!(&:succ) => {"c" => 1, "d" => 2}
Jason T Johnson, Jean Boussier
-
Fix
ActiveSupport::Cache::MemCacheStore#read_multito handle network errors.This method specifically wasn't handling network errors like other codepaths.
Alessandro Dal Grande
-
Fix configuring
RedisCacheStorewithraw: true.fatkodima
-
Fix
Enumerable#solefor infinite collections.fatkodima
Rails 8.0.2.1 (August 13, 2025)¶ ↑
-
No changes.
Rails 8.0.2 (March 12, 2025)¶ ↑
-
Fix setting
to_time_preserves_timezonefromnew_framework_defaults_8_0.rb.fatkodima
-
Fix Active Support Cache
fetch_multiwhen local store is active.fetch_multinow properly yield to the provided block for missing entries that have been recorded as such in the local store.Jean Boussier
-
Fix execution wrapping to report all exceptions, including
Exception.If a more serious error like
SystemStackErrororNoMemoryErrorhappens, the error reporter should be able to report these kinds of exceptions.Gannon McGibbon
-
Fix
RedisCacheStoreandMemCacheStoreto also handle connection pool related errors.These errors are rescued and reported to
Rails.error.Jean Boussier
-
Fix
ActiveSupport::Cache#read_multito respect version expiry when using local cache.zzak
-
Fix
ActiveSupport::MessageVerifierandActiveSupport::MessageEncryptorconfiguration ofon_rotationcallback.verifier.rotate(old_secret).on_rotation { ... }
Now both work as documented.
Jean Boussier
-
Fix
ActiveSupport::MessageVerifierto always be able to verify both URL-safe and URL-unsafe payloads.This is to allow transitioning seemlessly from either configuration without immediately invalidating all previously generated signed messages.
Jean Boussier, Florent Beaurain, Ali Sepehri
-
Fix
cache.fetchto honor the provided expiry when:race_condition_ttlis used.cache.fetch("key", expires_in: 1.hour, race_condition_ttl: 5.second) do "something" end
In the above example, the final cache entry would have a 10 seconds TTL instead of the requested 1 hour.
Dhia
-
Better handle procs with splat arguments in
set_callback.Radamés Roriz
-
Fix
String#mb_charsto not mutate the receiver.Previously it would call
force_encodingon the receiver, now it dups the receiver first.Jean Boussier
-
Improve
ErrorSubscriberto also mark error causes as reported.This avoid some cases of errors being reported twice, notably in views because of how errors are wrapped in
ActionView::Template::Error.Jean Boussier
-
Fix
Module#module_parent_nameto return the correct name after the module has been named.When called on an anonymous module, the return value wouldn't change after the module was given a name later by being assigned to a constant.
mod = Module.new mod.module_parent_name # => "Object" MyModule::Something = mod mod.module_parent_name # => "MyModule"
Jean Boussier
Rails 8.0.1 (December 13, 2024)¶ ↑
-
Fix a bug in
ERB::Util.tokenizethat causes incorrect tokenization whenERBtags are preceeded by multibyte characters.Martin Emde
-
Restore the ability to decorate methods generated by
class_attribute.It always has been complicated to use Module#prepend or an alias method chain to decorate methods defined by
class_attribute, but became even harder in 8.0.This capability is now supported for both reader and writer methods.
Jean Boussier
Rails 8.0.0.1 (December 10, 2024)¶ ↑
-
No changes.
Rails 8.0.0 (November 07, 2024)¶ ↑
-
No changes.
Rails 8.0.0.rc2 (October 30, 2024)¶ ↑
-
No changes.
Rails 8.0.0.rc1 (October 19, 2024)¶ ↑
-
Remove deprecated support to passing an array of strings to
ActiveSupport::Deprecation#warn.Rafael Mendonça França
-
Remove deprecated support to setting
attr_internal_naming_formatwith a@prefix.Rafael Mendonça França
-
Remove deprecated
ActiveSupport::ProxyObject.Rafael Mendonça França
-
Don't execute i18n watcher on boot. It shouldn't catch any file changes initially, and unnecessarily slows down boot of applications with lots of translations.
Gannon McGibbon, David Stosik
-
Fix
ActiveSupport::HashWithIndifferentAccess#stringify_keysto stringify all keys not just symbols.Previously:
{ 1 => 2 }.with_indifferent_access.stringify_keys[1] # => 2After this change:
{ 1 => 2 }.with_indifferent_access.stringify_keys["1"] # => 2This change can be seen as a bug fix, but since it behaved like this for a very long time, we're deciding to not backport the fix and to make the change in a major release.
Jean Boussier
Rails 8.0.0.beta1 (September 26, 2024)¶ ↑
-
Include options when instrumenting
ActiveSupport::Cache::Store#deleteandActiveSupport::Cache::Store#delete_multi.Adam Renberg Tamm
-
Print test names when running
rails test -vfor parallel tests.John Hawthorn, Abeid Ahmed
-
Deprecate
Benchmark.mscore extension.The
benchmarkgem will become bundled in Ruby 3.5Earlopain
-
ActiveSupport::TimeWithZone#inspectnow uses ISO 8601 style time likeTime#inspectJohn Hawthorn
-
ActiveSupport::ErrorReporter#reportnow assigns a backtrace to unraised exceptions.Previously reporting an un-raised exception would result in an error report without a backtrace. Now it automatically generates one.
Jean Boussier
-
Add
escape_html_entitiesoption toActiveSupport::JSON.encode.This allows for overriding the global configuration found at
ActiveSupport.escape_html_entities_in_jsonfor specific calls toto_json.This should be usable from controllers in the following manner:
class MyController < ApplicationController def index render json: { hello: "world" }, escape_html_entities: false end end
Nigel Baillie
-
Raise when using key which can't respond to to_sym in
EncryptedConfiguration.As is the case when trying to use an
IntegerorFloatas a key, which is unsupported.zzak
-
Deprecate addition and since between two
TimeandActiveSupport::TimeWithZone.Previously adding time instances together such as
10.days.ago + 10.days.agoor10.days.ago.since(10.days.ago)produced a nonsensical future date. This behavior is deprecated and will be removed inRails8.1.Nick Schwaderer
-
Support rfc2822 format for
Time#to_fs&Date#to_fs.Akshay Birajdar
-
Optimize load time for
Railtie#initialize_i18n. FilterI18n.load_paths passed to the file watcher to only those underRails.root. Previously the watcher would grab all available locales, including those in gems which do not require a watcher because they won't change.Nick Schwaderer
-
Add a
filteroption toin_order_ofto prioritize certain values in the sorting without filtering the results by these values.Igor Depolli
-
Improve error message when using
assert_differenceorassert_changeswith a proc by printing the proc's source code (MRI only).Richard Böhme, Jean Boussier
-
Add a new configuration value
:zoneforActiveSupport.to_time_preserves_timezoneand rename the previoustruevalue to:offset. The new default value is:zone.Jason Kim, John Hawthorn
-
Align instrumentation
payload[:key]inActiveSupport::Cacheto follow the same pattern, with namespaced and normalized keys.Frederik Erbs Spang Thomsen
-
Fix
travel_toto set usec 0 whenwith_usecisfalseand the given argumentStringorDateTime.mopp
Please check 7-2-stable for previous changes.