Rails

Rails 7 Retry Jobs Indefinitely

Rails 7 adds :unlimited option to retry_on attempts, allowing jobs to retry indefinitely until the failure is resolved.

ActiveStorage Raises PreviewError

Before this update, a failed preview generation would result in a 0-byte file being created – leading to disastrous outcomes in the views.

Rails 7 Faster Logger with class_attribute

Rails 7 utilized Ruby's cache for cvars to improve ActiveRecord::Base.logger performance 7x. Let's deep dive into this!

ActiveRecord Column-Based Type Casting

Rails 7 now harmonizes results of ActiveRecord::Calculations.average by applying column-based typecasting.

Rails 7 Adds Absolute Cache Expiry

With the introduction of expires_at to Rails Cache it is now possible to set absolute timestamps for cache expiry.

Rails 7 belongs_to Change Tracking

Rails 7 adds association_changed? and association_previously_changed? methods for belongs_to associations.

Rails 7 Nested Locales in Engines

Rails 7 allows loading nested locales inside the `/locales` directory by default for better organization in larger apps.

Rails 7 if_exists for Foreign Keys

Rails 7 adds support for `if_exists/if_not_exists` on `remove_foreign_key/add_foreign_key` in migrations to silently ignore raised exceptions.

Rails 7 MySQL Security Improvements

MySQL adapter in Rails 7 casts numbers and booleans to string to avoid security vulnerabilities.

Rails 7 Adds previously_persisted?

Rails 7 adds previously_persisted? method to check an object previously existed in the database and presently deleted.