Rails

Rails 7 adds `audio` in the metadata for video files

With the addition of `audio` metadata to video blobs, it will now be possible to check the presence of an audio channel in a video file.

Rails 7 adds Marginalia to Query Logs

With this update, Marginalia SQL comments are added to Rails as a native feature!

Rails 7 adds support for ActiveStorage expiring URLs

Rails 7 adds the `expires_in` option in the ActiveStorage URL helper for generating expiring URLs.

Rails 7 adds ActiveRecord::Relation#structurally_compatible?

Rails 7 adds ActiveRecord::Relation#structurally_compatible? to provide an easy way to check if two relations are structurally compatible before running `or` or `and` query on it.

Rails 7 adds attributes_for_database to return attributes as they would be in the database

Before this update, serializing an ActiveRecord object led to funny outcomes. Let's dive in!

Rails 7 allows anything that responds to `#to_str` into redirect_to

Rails 7 adds support for redirecting using any arguments that respond_to `#to_str`.

Rails 7 optimizes remove_columns to use a single SQL statement when supported

Rails 7 remove_columns will now trigger a single SQL statement to remove all columns if the database supports it, instead of querying multiple SQL statements for removing individual columns.

Rails 7 now consistently renders button_to

Rails 7 introduced a config that helps button_to consistently render out to the button HTML tag.

Starting with Rails 7, retry failed jobs indefinitely

Pass `:unlimited` symbol to `attempts` parameter of ActiveJob's `retry_on` method, which allows a developer to specify that a job should retry forever until it succeeds.

ActiveStorage now raises a PreviewError when previews fail to generate

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