This Week in Rails

October 25, 2024

Active Job config `enqueue_after_transaction_commit` has been deprecated

Hi, it's zzak. Let's explore this week's changes in the Rails codebase.

Deprecate setting the behavior of deferring job queueing until after commit
The active_job.enqueue_after_transaction_commit setting has been deprecated. This behavior is not intended to be changed globally, but on a per-job basis.

Add support for using Kamal inside of the generated devcontainer
Just like the title implies, you can now use Kamal when running Rails in the devcontainer.

Fix enum labels to accept keyword arguments
Now you can define enums without the extra brackets using keyword arguments.
# Before
enum :status, { default: 0, scopes: 1, prefix: 2, suffix: 3 }

# After
enum :status, default: 0, scopes: 1, prefix: 2, suffix: 3

Allow renaming enums to accept two from/to positional arguments similar to renaming tables
This change makes the API for rename_enum to be more consistent with rename_table.

Add prefix address when IPAddr of CIDR encoded with JSON
If you're using IPaddr with CIDR notation, the prefix will now be included when encoding with ActiveSupport::JSON.

Make internal query() retryable
This change takes advantage of deferred connection verification to reduce the number of times a connection must be verified during a single request.

Fix Current Attributes' "attributes" method to return new object each time
Now calling Current.attributes will return a new object each time it is called.

Treat "no connection to the server" as ConnectionNotEstablished
This PR updates the PostgreSQL adapter to treat the PG::UnableToSend: no connection to the server error as a ConnectionNotEstablished error.

Fix strict loading propagation even if statement cache is not used
Now a StrictLoadingViolationError will be raised even if the statement cache is not used.

Reduce allocations in Active Support Duration's "since" and "ago"
This change reduces the number of allocations by a very small amount, but is interesting if you're learning about optimization and benchmarks.

Fix "NoMethodError" when content type is set to nil in tests
It might seem like a small change, but this PR resolves the NoMethodError when setting "request.content_type = nil" in tests. That seems like maybe an easy trap to fall into.

You can view the whole list of changes here. We had 22 contributors to the Rails codebase this past week!

Until next time!

About This Week in Rails

Your weekly inside scoop of interesting commits, pull requests and more from Rails.