Active Support
-
Make
delegateanddelegate_missing_towork in BasicObject subclasses.Rafael Mendonça França
-
Fix Inflectors when using a locale that fallbacks to
:en.Said Kaldybaev
-
Fix
ActiveSupport::TimeWithZone#as_jsonto consistently return UTF-8 strings.Previously the returned string would sometime be encoded in US-ASCII, which in
some cases may be problematic.Now the method consistently always return UTF-8 strings.
Jean Boussier
-
Fix
TimeWithZone#xmlschemawhen wrapping aDateTimeinstance in local time.Previously it would return an invalid time.
Dmytro Rymar
-
Implement LocalCache strategy on
ActiveSupport::Cache::MemoryStore. The memory store
needs to respond to the same interface as other cache stores (e.g.ActiveSupport::NullStore).Mikey Gough
-
Fix
ActiveSupport::Inflector.humanizewith international characters.ActiveSupport::Inflector.humanize("áÉÍÓÚ") # => "Áéíóú" ActiveSupport::Inflector.humanize("аБВГДЕ") # => "Абвгде"
Jose Luis Duran
Active Model
- No changes.
Active Record
-
Fix counting cached queries in
ActiveRecord::RuntimeRegistry.fatkodima
-
Fix merging relations with arel equality predicates with null relations.
fatkodima
-
Fix SQLite3 schema dump for non-autoincrement integer primary keys.
Previously,
schema.rbshould incorrectly restore that table with an auto incrementing
primary key.Chris Hasiński
-
Fix PostgreSQL
schema_search_pathnot being reapplied afterreset!orreconnect!.The
schema_search_pathconfigured indatabase.ymlis now correctly
reapplied instead of falling back to PostgreSQL defaults.Tobias Egli
-
Restore the ability of enum to be foats.
enum :rating, { low: 0.0, medium: 0.5, high: 1.0 },
In Rails 8.1.0, enum values are eagerly validated, and floats weren't expected.
Said Kaldybaev
-
Ensure batched preloaded associations accounts for klass when grouping to avoid issues with STI.
zzak, Stjepan Hadjic
-
Fix
ActiveRecord::SoleRecordExceeded#recordto return the relation.This was the case until Rails 7.2, but starting from 8.0 it
started mistakenly returning the model class.Jean Boussier
-
Improve PostgreSQLAdapter resilience to Timeout.timeout.
Better handle asynchronous exceptions being thrown inside
thereconnect!method.This may fixes some deep errors such as:
undefined method `key?' for nil:NilClass (NoMethodError) if !type_map.key?(oid)Jean Boussier
-
Fix structured events for Active Record was not being emitted.
Yuji Yaginuma
-
Fix
eager_loadwhen loadinghas_manyassocations with composite primary keys.This would result in some records being loaded multiple times.
Martin-Alexander
Action View
-
Fix
file_fieldto join mime types with a comma when provided as Arrayfile_field(:article, :image, accept: ['image/png', 'image/gif', 'image/jpeg'])
Now behaves likes:
file_field(:article, :image, accept: 'image/png,image/gif,image/jpeg')Bogdan Gusiev
-
Fix strict locals parsing to handle multiline definitions.
Said Kaldybaev
-
Fix
content_security_policy_nonceerror in mailers when usingcontent_security_policy_nonce_autosetting.The
content_security_policy_nonce helperis provided byActionController::ContentSecurityPolicy, and it relies onrequest.content_security_policy_nonce. Mailers lack both the module and the request object.Jarrett Lusso
Action Pack
-
Add
config.action_controller.live_streaming_excluded_keysto control execution state sharing in ActionController::Live.When using ActionController::Live, actions are executed in a separate thread that shares
state from the parent thread. This new configuration allows applications to opt-out specific
state keys that should not be shared.This is useful when streaming inside a
connected_toblock, where you may want
the streaming thread to use its own database connection context.# config/application.rb config.action_controller.live_streaming_excluded_keys = [:active_record_connected_to_stack]
By default, all keys are shared.
Eileen M. Uchitelle
-
Fix
IpSpoofAttackErrormessage to includeForwardedheader content.Without it, the error message may be misleading.
zzak
Active Job
-
Fix
ActiveJob.perform_all_laterto respectjob_class.enqueue_after_transaction_commit.Previously,
perform_all_laterwould enqueue all jobs immediately, even if
they hadenqueue_after_transaction_commit = true. Now it correctly defers
jobs with this setting until after transaction commits, matching the behavior
ofperform_later.OuYangJinTing
-
Fix using custom serializers with
ActiveJob::Arguments.serializewhen
ActiveJob::Basehasn't been loaded.Hartley McGuire
Action Mailer
- No changes.
Action Cable
- No changes.
Active Storage
-
Restore ADC when signing URLs with IAM for GCS
ADC was previously used for automatic authorization when signing URLs with IAM.
Now it is again, but the auth client is memoized so that new credentials are only
requested when the current ones expire. Other auth methods can now be used
instead by setting the authorization onActiveStorage::Service::GCSService#iam_client.ActiveStorage::Blob.service.iam_client.authorization = Google::Auth::ImpersonatedServiceAccountCredentials.new(options)
This is safer than setting
Google::Apis::RequestOptions.default.authorization
because it only applies to Active Storage and does not affect other Google API
clients.Justin Malčić
Action Mailbox
- No changes.
Action Text
- No changes.
Railties
-
Skip all system test files on app generation.
Eileen M. Uchitelle
-
Fix
db:system:changeto correctly update Dockerfile base packages.Josiah Smith
-
Fix devcontainer volume mount when app name differs from folder name.
Rafael Mendonça França
-
Fixed the
rails notescommand to properly extract notes in CSS files.David White
-
Fixed the default Dockerfile to properly include the
vendor/directory duringbundle install.Zhong Sheng
Guides
- No changes.