Hi! This is Vipul bringing you the latest from this week’s changes in the Rails codebase.
Introduce config.dom_testing_default_html_version and use Rails::Dom::Testing to parse HTML in test helpers
Previously support was added to
Rails::Dom::Testing for HTML5. This may cause issues if we still want to rely on HTML4 based testing.
This change adds a new configuration option
config.dom_testing_default_html_version to allow users to configure the HTML version 4/5 to use when parsing HTML in test helpers.
Support filtering tests by line ranges
This change allows new syntax to filter tests by line ranges. For example, the following command runs tests from line 10 to 20.
$ rails test test/models/user_test.rb:10-20
Support NULLS NOT DISTINCT in Postgres 15+
This change adds full support
NULLS [NOT] DISTINCT for PostgreSQL 15+ indexes.
Previous work was done to allow the index to be created in a migration, but it was not supported in
Additionally, the matching for
NULLS [NOT] DISTINCT was not in the correct order, which could have resulted in inconsistent schema detection.
Improve performance of JSON HTML entity escaping
John has been making various speed improvements to
This latest change improves the performance of HTML entity escaping by ~2x.
Overall these changes put the performance of
.to_json to be around ~4.5 faster than Rails 7.0.
Allow escaping of literal colons in ActionRecord::Sanitization#replace_named_bind_variables
This commit adds ability to allow escaping of literal colon characters in
sanitize_sql_* methods when named bind variables are used. For example:
sanitize_sql_array(["TO_TIMESTAMP(:date, 'YYYY/MM/DD HH12\\:MI\\:SS')", date: "foo"])
# => "TO_TIMESTAMP('foo', 'YYYY/MM/DD HH12:MI:SS')"
Omit webdrivers gem from Gemfile template
As of Selenium 4.6, the Selenium Manager is capable of managing Chrome Driver installations and integrations.
This make the requirement on
webdrivers gem to be obsolete. This commit makes changes to omit
webdrivers gem dependency from
Gemfile template so that newly generated Apps won’t need it.
Adds Arel::FactoryMethods#cast(node, type)
CAST(field as type) is a widely supported SQL function. This PR adds native Arel support for this named function with a
cast(field, type) helper.
product_table = Product.arel_table
# => CAST("products"."position" as integer)
Save screenshot path on system test failure
Lots of CI tools support showing a system spec failure screenshot in their UI.
This Pull Request changes
ActionDispatch::SystemTesting::TestHelpers::ScreenshotHelper to save the screenshot path in the test metadata on failure,
which can be used by CI tools to show the screenshot.
You can view the whole list of changes here.
We had 27 contributors to the Rails codebase this past week!
Until next time!
Subscribe to get these updates mailed to you.