Rails 8.0.2 (March 12, 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 inActionView::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 when ERB tags 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 byclass_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] # => 2
After this change:
{ 1 => 2 }.with_indifferent_access.stringify_keys["1"] # => 2
This 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_syminEncryptedConfiguration.As is the case when trying to use an Integer or Float as 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 in Rails 8.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]in ActiveSupport::Cache to follow the same pattern, with namespaced and normalized keys.Frederik Erbs Spang Thomsen
Fix
travel_toto set usec 0 whenwith_usecisfalseand the given argument String or DateTime.mopp
Please check 7-2-stable for previous changes.