Hey everyone, Happy Friday!
Vipul here with the latest updates for This Week in Rails. Let’s dive in!
Rails 8: The Demo
In case you missed it, Rails 8 was released last week. A new demo from DHH is now up Rails 8: The Demo showcasing its usage.
The video covers getting started with Rails 8 by building a basic blog, adding a WYSIWYG editor, putting it behind authentication, making it available as PWA, and deploying to production.
In just 30 minutes!
Rails World re-edited videos!
All Rails World videos have been re-edited and are up on YouTube! They also now have Japanese, Brazilian Portuguese, and Spanish subtitles thanks to Happy Scribe (a transcription platform built on Rails).
Add ActiveSupport::Testing::NotificationAssertions test helper module
With this addition, we can now use various test helper methods for notification assertions:
assert_notification("post.submitted", title: "Cool Post") do
post.submit(title: "Cool Post") # => emits matching notification
end
assert_notifications_count("post.submitted", 1) do
post.submit(title: "Cool Post")
end
assert_no_notifications("post.submitted") do
post.destroy
end
notifications = capture_notifications("post.submitted") do
post.submit(title: "Cool Post") # => emits matching notification
end
Put back the quiet assets config in development
This config was removed during Sprockets removal. It is still supported by propshaft and without this config the terminal is cluttered with assets request log.
This change bring back this config to silence these logs in development by default.
Allow path regex in SilenceRequest middleware
Rails::Rack::SilenceRequest
middleware now supports regex in path filtering. For example
config.middleware.insert_before Rails::Rack::Logger,
Rails::Rack::SilenceRequest, path: /up$/
will silence logs from paths ending in “up”.
Allow hidden_field(_tag) to accept a custom autocomplete value
Previously a change introduced an enforced autocomplete=”off” to all hidden inputs generated by Rails to fix a Firefox bug.
But it’s also a legitimate use-case to specify an autocomplete with a value such as username and a value on a hidden input. This hints to the browser that (in this example) the username of a password reset form is what we’ve provided as the value and the password manager can store it as such.
This commit only sets autocomplete=”off” if another autocomplete value isn’t provided.
Parallel tests with :number_of_processors uses cgroups-aware usable processor count
Parallel tests with :number_of_processors
uses cgroups-aware usable processor count, which is now correctly available for use via Concurrent.available_processor_count
.
Ensure normalized attribute queries are consistent for nil and normalized nil
This change ensures that normalized attribute queries are consistent for nil
and normalized nil
. Ex:
class Aircraft < ApplicationRecord
normalizes :name, with: -> name { name.presence&.titlecase }
end
# With this change, these queries are now consistent:
Aircraft.where(name: nil).to_sql === Aircraft.where(name: "").to_sql
Fix regression when calling sum with a grouped calculation
This change fixes a regression with sum
when performing a grouped calculation.
For example User.group(:friendly).sum
no longer worked, which is now fixed.
Don’t add bin/thrust if thruster is not in Gemfile
Running app:update
after upgrading to Rails 8.0.0 results in bin/thrust
being added even though thruster
is not in the Gemfile.
This fixes it by checking if thruster
is in the Gemfile to set the --skip-thruster
option when running the generator in the app:update
command.
You can view the whole list of changes here. We had 37 contributors to the Rails codebase this past week!
Until next time!
Subscribe to get these updates mailed to you.