This Week in Rails

November 24, 2023

ErrorReporter#unexpected, with_routing test helpers and more!

Happy Thanksgiving weekend everyone! This is Vipul bringing you the latest from this week’s changes in the Rails codebase.

ErrorReporter#unexpected to report in production but raise in development
This change adds ErrorReported#unexpected to report precondition violations.

For example:
  def edit
    if published?
      Rails.error.unexpected("[BUG] Attempting to edit a published article, that shouldn't be possible")
        return false
    end
      # ...
  end
The above will raise an error in development and test, but only report the error in production.

Make with_routing test helper work for integration tests
with_routing test helper support has now been added to ActionDispatch::IntegrationTest to allow usage in integration tests.

Support nested elements inside button tag in Active Storage uploads
This change addresses a potential issue that could arise when a button or an input of type submit contains child elements, such as spans, icons, or other HTML elements.

Remove deprecations
This PR is an ongoing effort to remove all deprecated code, marked as deprecated for Rails 7.2. Checkout the PR for all things going away and if you are handling them already!

Handle case in MySQL where the ActiveRecord.db_warnings_action is not called even when a DB query has warnings
This change handles cases where MySQL returns warning_count greater than zero, but returns no warnings when the SHOW WARNINGS query is executed, ActiveRecord.db_warnings_action proc will still be called with a generic warning message rather than silently ignoring the warning(s).

Delay validation of registered Active Record adapters and allow aliasing of adapters
This change is from an ongoing effort to allow aliasing of DB adapters by name. The end state here is to allow mysql to be mapped to either trilogy or mysql2 at an application level.

You can view the whole list of changes here.
We had 20 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.