Hi, it’s zzak. ✈️ RailsConf has come to a close, and Golden Week is upon us here in Japan. Lots to catch up on in This Week in Rails.
Many documentation improvements to extend our SEO posture
The venerable @p8 has been very busy trying to improve Rails documentation fortune with search engines.
On the topic of documentation, the PostgreSQL guide received new sections on INCLUDE, UNIQUE, and EXCLUDE.
Only flatten first level to preserve nested for Enumerable#in_order_of
This is a great example where a developer was actively testing their application against Rails main branch and discovered this bug, and even sent a patch! Good work!
Fix pg 1.5.0 deprecation warning
This warning occurs when using the recently released
pg gem version 1.5.0. The PR has been backported, so the next point release should quiet things!
Consistently raise an
ArgumentError if the
ActiveSupport::Cache key is blank
@cache.read(nil) #=> ArgumentError
This PR ensures that we consistently raise on a blank key for all store implementations.
Make Rails cookies RFC6265-compliant with domain: :all
Rails has incorrectly been adding leading dots to cookie domain values in
Set-Cookie headers when the
domain: :all option is present.
This leading dot was required in cookies based on RFC 2965 (October 2000), but RFC 6265 (April 2011) changed the behavior, making a leading dot strictly incorrect. Todays browsers aim to conform to RFC6265 with respect to cookies. The
domain: :all functionality in Rails predates RFC6265.
Allow symbols as queue names in Active Job test assertions
This PR allows
assert_performed_with to accept both symbol or strings.
assert_performed_jobs variation already accepted both.
Raise if setting a config key that is a method name
config.load_defaults = 7.0 #=> NoMethodError
Previously the first example would be silently accepted, although take no effect.
Add load hook for
Now you are free to extend the MySQL adapter using the following hook:
ActiveSupport.on_load(:active_record_mysql2adapter) do # change some behavior end
This PR brings the MySQL adapter up to speed with PostgreSQL and SQLite3.
Fix updated_at not updating in before_update callback
As described, this PR makes sure the
updated_at timestamp is updated once all
update callbacks have run, wherever mutations may occur, including
Using Rack::Test::UploadedFile.new with StringIO causes an exception
This PR fixes an issue in Active Storage with
PostgreSQL can accept deferrable foreign key option for TableDefinition#references
Rails 7.0 added support for deferrable foreign key constraints via the
add_foreign_key method, this PR adds support to
t.references as well.
Deprecate “deferrable: true” option in favor of “deferrable: :immediate”
deferrable: true and
deferrable: :deferred are hard to understand.
deferrable: true with
add_foreign_key is deprecated in favor of
deferrable: :immediate, and will be removed in Rails 7.2.
Add support for Array#intersects? to ActiveRecord::Relation
Ruby 3.1 added
intersects? which is equivalent to
(a & b).any?.
This PR adds the delegation of
Relation which fixes an issue with Rubocop false positive on
Add CTE support for joins
Last but certainly not least, you can now use
left_outer_joins when using the
.with query method to create a Common Table Expression (CTE).
You can view the whole list of changes here.
We had 30 contributors to the Rails codebase this past week!
Until next time!
Subscribe to get these updates mailed to you.