Hey everyone, Happy Friday!
Vipul here with the latest updates for This Week in Rails.
This week, several improvements were made to Routes lookup. Below are a few notable changes-
Speed up GTG Simulator by reducing slices/matches
This change improves routing performance by 10-20% in simple cases by removing duplication and preventing excess string allocations.
Micro-Optimize Router#find_routes
This PR slightly improves the routes finding process by removing overheads and speeds up the route look up process by 2-2.5x faster compared to Rails 8.0.
Simplify stdparam state to reduce retained hashes
This PR simplifies the data stored in stdparam_state
to be a simpler hash mapping and improving performance in hash intensive operations.
Here’s a list of other PRs with improvements around this area: #54504, #54491, #54505, #54515, #54516, #54526.
Allow execution wrapper to handle all exceptions
This PR changes the execution wrapper and execution middleware to default to catching all Exception
s instead of all StandardError
s.
Essentially, before this change:
Rails.error.handle do
raise Exception
end
would not handle the exception, but now it does.
Make Value type default to mutable
This change makes the ActiveModel type values mutable by default, which in turn guarantees that custom type values are duplicated appropriately when modified.
Pass keyword arguments to PostgreSQL Adapter Table methods
With the use of forward argument (...)
PostgreSQL adapter table definition methods can now accept keyword arguments.
This change lays essential groundwork for validate_constraint
and validate_check_constraint
to start accepting keyword arguments.
Further restrict which contradicted queries need to be run
This change ensures that only fully matching queries trigger aggregation, ignoring mismatches and certain ARel values to avoid some additional queries.
Allow to skip HashWithIndifferentAccess value conversion
This PR addresses an inefficiency in ActiveModel’s handling of attribute changes, specifically when working with HashWithIndifferentAccess in serialized attributes.
You can view the whole list of changes here.
We had 18 contributors to the Rails codebase this past week!
Until next time!
Subscribe to get these updates mailed to you.