rails 7.1.4
Active Support
-
Improve compatibility for
ActiveSupport::BroadcastLogger.Máximo Mussini
-
Pass options along to write_entry in handle_expired_entry method.
Graham Cooper
-
Fix Active Support configurations deprecations.
fatkodima
-
Fix teardown callbacks.
Tristan Starck
-
BacktraceCleanersilence core internal methods by default.Jean Boussier
-
Fix
delegate_missing_to allow_nil: truewhen called with implict selfclass Person delegate_missing_to :address, allow_nil: true def address nil end def berliner? city == "Berlin" end end Person.new.city # => nil Person.new.berliner? # undefined local variable or method `city' for an instance of Person (NameError)Jean Boussier
-
Work around a Ruby bug that can cause a VM crash.
This would happen if using
TaggerLoggerwith a Proc formatter on which you calledobject_id.[BUG] Object ID seen, but not in mapping table: procJean Boussier
-
Fix
ActiveSupport::Notifications.publish_eventto preserve units.This solves the incorrect reporting of time spent running Active Record asynchronous queries (by a factor
1000).Jean Boussier
Active Model
- No changes.
Active Record
-
Allow to eager load nested nil associations.
fatkodima
-
Fix
create_tablewith:auto_incrementoption for MySQL adapter.fatkodima
-
Don't load has_one associations during autosave.
Eugene Kenny
-
Fix migration ordering for
bin/rails db:prepareacross databases.fatkodima
-
Fix
alias_attributeto ignore methods defined in parent classes.Jean Boussier
-
Fix a performance regression in attribute methods.
Jean Boussier
-
Fix Active Record configs variable shadowing.
Joel Lubrano
-
Fix running migrations on other databases when
database_tasks: falseon primary.fatkodima
-
Fix non-partial inserts for models with composite identity primary keys.
fatkodima
-
Fix
ActiveRecord::Relation#touch_allwith custom attribute aliased as attribute for update.fatkodima
-
Fix a crash when an Executor wrapped fork exit.
Joé Dupuis
-
Fix
destroy_asyncjob for owners with composite primary keys.fatkodima
-
Ensure pre-7.1 migrations use legacy index names when using
rename_table.fatkodima
-
Allow
primary_key:association option to be composite.Nikita Vasilevsky
-
Do not try to alias on key update when raw SQL is supplied.
Gabriel Amaral
-
Memoize
key_providerfromkeyor deterministickey_providerif any.Rosa Gutierrez
-
Fix
upsertwarning for MySQL.fatkodima
-
Fix predicate builder for polymorphic models referencing models with composite primary keys.
fatkodima
-
Fix
update_all/delete_allon CPK model relation with join subquery.Nikita Vasilevsky
-
Remove memoization to accept
key_provideroverridden bywith_encryption_context.John Hawthorn
-
Raise error for Trilogy when prepared_statements is true.
Trilogy doesn't currently support prepared statements. The error that applications would see is a
StatementInvaliderror. This doesn't quite point you to the fact this isn't supported. So raise a more appropriate error pointing to what to change.Eileen M. Uchitelle
-
Fix loading schema cache when all databases have disabled database tasks.
fatkodima
-
Always request
primary_keyinRETURNINGif no other columns requested.Nikita Vasilevsky
-
Handle records being loaded with Marshal without triggering schema load
When using the old marshalling format for Active Record and loading a serialized instance, it didn't trigger loading the schema and defining attribute methods.
Jean Boussier
-
Prevent some constant redefinition warnings when defining
inheritedon models.Adrian Hirt
-
Fix a memory perfomance regression in attribute methods.
Attribute methods used much more memory and were slower to define than they should have been.
Jean Boussier
-
Fix an issue that could cause database connection leaks.
If Active Record successfully connected to the database, but then failed to read the server informations, the connection would be leaked until the Ruby garbage collector triggers.
Jean Boussier
-
Fix an issue where the IDs reader method did not return expected results for preloaded associations in models using composite primary keys.
Jay Ang
-
PostgreSQL
Cidr#change?detects the address prefix change.Taketo Takashima
-
Fix Active Record serialization to not include instantiated but not loaded associations
Jean Boussier, Ben Kyriakou
-
Allow
Sqlite3Adapterto usesqlite3gem version2.xMike Dalessio
-
Strict loading using
:n_plus_one_onlydoes not eagerly load child associations.With this change, child associations are no longer eagerly loaded, to match intended behavior and to prevent non-deterministic order issues caused by calling methods like
firstorlast. Asfirstandlastdon't cause an N+1 by themselves, calling child associations will no longer raise. Fixes #49473.Before:
person = Person.find(1) person.strict_loading!(mode: :n_plus_one_only) person.posts.first # SELECT * FROM posts WHERE person_id = 1; -- non-deterministic order person.posts.first.firm # raises ActiveRecord::StrictLoadingViolationErrorAfter:
person = Person.find(1) person.strict_loading!(mode: :n_plus_one_only) person.posts.first # this is 1+1, not N+1 # SELECT * FROM posts WHERE person_id = 1 ORDER BY id LIMIT 1; person.posts.first.firm # no longer raisesReid Lynch
-
Using
Model.query_constraintswith a single non-primary-key column used to raise as expected, but with an incorrect error message. This has been fixed to raise with a more appropriate error message.Joshua Young
-
Fix
has_oneassociation autosave setting the foreign key attribute when it is unchanged.This behaviour is also inconsistent with autosaving
belongs_toand can have unintended side effects like raising anActiveRecord::ReadonlyAttributeErrorwhen the foreign key attribute is marked as read-only.Joshua Young
-
Fix an issue where
ActiveRecord::Encryptionconfigurations are not ready before the loading of Active Record models, when an application is eager loaded. As a result, encrypted attributes could be misconfigured in some cases.Maxime Réty
-
Properly synchronize
Mysql2Adapter#active?andTrilogyAdapter#active?As well as
disconnect!andverify!.This generally isn't a big problem as connections must not be shared between threads, but is required when running transactional tests or system tests and could lead to a SEGV.
Jean Boussier
-
Fix counter caches when the foreign key is composite.
If the model holding the counter cache had a composite primary key, inserting a dependent record would fail with an
ArgumentErrorExpected corresponding value for...fatkodima
-
Fix loading of schema cache for multiple databases.
Before this change, if you have multiple databases configured in your application, and had schema cache present, Rails would load the same cache to all databases.
Rafael Mendonça França
-
Fix eager loading of composite primary key associations.
relation.eager_load(:other_model)could load the wrong records ifother_modelhad a composite primary key.Nikita Vasilevsky
-
Fix async queries returning a doubly wrapped result when hitting the query cache.
fatkodima
-
Fix single quote escapes on default generated MySQL columns
MySQL 5.7.5+ supports generated columns, which can be used to create a column that is computed from an expression.
Previously, the schema dump would output a string with double escapes for generated columns with single quotes in the default expression.
This would result in issues when importing the schema on a fresh instance of a MySQL database.
Now, the string will not be escaped and will be valid Ruby upon importing of the schema.
Yash Kapadia
-
Fix Migrations with versions older than 7.1 validating options given to
t.references.Hartley McGuire
Action View
-
Action View Test Case
renderedmemoization.Sean Doyle
-
Restore the ability for templates to return any kind of object and not just strings
Jean Boussier
-
Fix threading issue with strict locals.
Robert Fletcher
Action Pack
-
Resolve deprecation warning in latest
selenium-webdriver.Earlopain
-
Don't preload Selenium browser when remote.
Noah Horton
-
Fix crash for invalid Content-Type in ShowExceptions middleware.
Earlopain
-
Fix inconsistent results of
params.deep_transform_keys.Iago Pimenta
-
Do not report rendered errors except 500.
Nikita Vasilevsky
-
Improve routes source location detection.
Jean Boussier
-
Fix
Request#raw_postraisingNoMethodErrorwhenrack.inputisnil.Hartley McGuire
-
Fix url generation in nested engine when script name is empty.
zzak
-
Fix
Mime::Type.parsehandling type parameters for HTTP Accept headers.Taylor Chaparro
-
Fix the error page that is displayed when a view template is missing to account for nested controller paths in the suggested correct location for the missing template.
Joshua Young
-
Fix a regression in 7.1.3 passing a
to:option without a controller when the controller is already defined by a scope.Rails.application.routes.draw do controller :home do get "recent", to: "recent_posts" end endÉtienne Barrié
-
Fix
ActionDispatch::Executormiddleware to report errors handled byActionDispatch::ShowExceptionsIn the default production environment,
ShowExceptionsrescues uncaught errors and returns a response. Because of this the executor wouldn't report production errors with the default Rails configuration.Jean Boussier
Active Job
-
Register autoload for
ActiveJob::Arguments.Rafael Mendonça França
Action Mailer
- No changes.
Action Cable
- No changes.
Active Storage
-
Fixes race condition for multiple preprocessed video variants.
Justin Searls
Action Mailbox
- No changes.
Action Text
-
Strip
contentattribute if the key is present but the value is emptyJeremy Green
-
Only sanitize
contentattribute when present in attachments.Petrik de Heus
Railties
-
Preserve
--asset-pipeline propshaftwhen runningapp:update.Zacharias Knudsen
-
Allow string keys for SQLCommenter.
Ngan Pham
-
Fix derived foreign key to return correctly when association id is part of query constraints.
Varun Sharma
-
Show warning for
secret_key_basein development too.fatkodima
-
Fix sanitizer vendor configuration in 7.1 defaults.
In apps where
rails-html-sanitizerwas not eagerly loaded, the sanitizer default could end up being Rails::HTML4::Sanitizer when it should be set toRails::HTML5::Sanitizer.Mike Dalessio, Rafael Mendonça França
-
Revert the use of
Concurrent.physical_processor_countin default Puma configWhile for many people this saves one config to set, for many others using a shared hosting solution, this cause the default configuration to spawn way more workers than reasonable.
There is unfortunately no reliable way to detect how many cores an application can realistically use, and even then, assuming the application should use all the machine resources is often wrong.
Jean Boussier