This week in Rails
May 28 2021
Active Record Encrytion, several performance optimizations, and much MORE!
here! お久しぶりです! This time I will be recapping the past month or so of Rails. Hang on! There's a ton of stuff to catch up on!!
Active Record Encryption
Originally extracted from HEY, this feature adds encrypted attributes to Active Record models. You can find out more in the
Optimize Cache::Entry coder
Active Support's cache has received a significant speed bump that was well overdue.
Optimize Active Model generated attribute methods
This optimization should reduce memory overhead and speed up boot times.
7x speed up for ActiveRecord::Base.logger
By converting AR::Base.logger to a class_attribute we had significant performance gains.
Allow nesting locales for Engines
This opens up better organization for larger apps using i18n.
e.g. config/locales/en/models.yml vs. config/locales/models.en.yml
Support Range objects in Active Job
This change adds an Active Job serializer for the Range object from Ruby.
Add Enumerable#sole to Active Support
Based on ActiveRecord::FinderMethods#sole, this method returns the sole item of the enumerable. If there are no items, or more than one item it will raise an exception.
Deprecate Enumerable#sum and Array#sum
Since Ruby 2.4 included these methods, Rails can start using the native versions for significant performance increase.
Improve Active Record performance for #one? and #many?
By limiting the generated count queries, this optimization provides significant performance increase for operations over many rows.
Log a warning when running SQLite in production
A warning is now emitted when trying to use SQLite in production, this can be disabled by setting config.active_record.sqlite3_production_warning to false.
Add disable_joins option to has_one relation
This solves a problem with has_one...through relationships whose tables are in separate database clusters.
Add support for require-trusted-types-for and trusted-types
This feature adds support for these two Content-Security-Policy headers which you can read more about over at
Remove and deprecate Rack::Runtime
Any apps depending on this middleware can still activate it manually, otherwise a deprecation warning will be sent and replaced with a fake.
Allow access to nested secrets in Rails.application.credentials
Now Rails.application.credentials.aws.access_key_id will return the same thing as Rails.application.credentials.aws[:access_key_id].
Adds the ability to live stream binary data to the browser like send_data does for static files.
This allows you to stream blobs from cloud storage in any controller.
Add from: option to ActiveSupport::TestCase#assert_no_changes
This feature provides an optional keyword argument to assert_no_changes to specify the expected initial value.
contributed to Rails this month. Check out the
to get involved and help out. Until next week!
Rails 7 alpha released
Bye-bye Byebug, Hello jsbundling and cssbundling!
Remove default reliance on Sass and more!
Good-bye classic mode, --skip-puma, --skip-gemfile.. hello weekday_options_for_select!
ESM importmap and Marginalia
Active Record goodies and more!
Favicons, InvalidAuthenticityToken message gains, Journey optimizations and more!
Active record improvements and much more
Performance and parallel testing improvements and more!
Rails 6.1.4 and plenty of developer UX goodies