Ruby on Rails: v6.0.3 Release

Release date:
May 6, 2020
Previous version:
Could not determine previous release version
Magnitude:
0 Diff Delta
Contributors:
0 total committers
Data confidence:
Commits:

Top Contributors in v6.0.3

Could not determine top contributors for this release.

Directory Browser for v6.0.3

We couldn't find a release before this one

Release Notes Published

In this version, we fixed warnings when used with Ruby 2.7 across the entire framework.

Following are the list of other changes, per-framework.

Active Support

  • Array#to_sentence no longer returns a frozen string.

    Before:

    ['one', 'two'].to_sentence.frozen?
    # => true
    

    After:

    ['one', 'two'].to_sentence.frozen?
    # => false
    

    Nicolas Dular

  • Update ActiveSupport::Messages::Metadata#fresh? to work for cookies with expiry set when ActiveSupport.parse_json_times = true.

    Christian Gregg

Active Model

  • No changes.

Active Record

  • Recommend applications don't use the database kwarg in connected_to

    The database kwarg in connected_to was meant to be used for one-off scripts but is often used in requests. This is really dangerous because it re-establishes a connection every time. It's deprecated in 6.1 and will be removed in 6.2 without replacement. This change soft deprecates it in 6.0 by removing documentation.

    Eileen M. Uchitelle

  • Fix support for PostgreSQL 11+ partitioned indexes.

    Sebastiรกn Palma

  • Add support for beginless ranges, introduced in Ruby 2.7.

    Josh Goodall

  • Fix insert_all with enum values

    Fixes #38716.

    Joel Blum

  • Regexp-escape table name for MS SQL

    Add Regexp.escape to one method in ActiveRecord, so that table names with regular expression characters in them work as expected. Since MS SQL Server uses "[" and "]" to quote table and column names, and those characters are regular expression characters, methods like pluck and select fail in certain cases when used with the MS SQL Server adapter.

    Larry Reid

  • Store advisory locks on their own named connection.

    Previously advisory locks were taken out against a connection when a migration started. This works fine in single database applications but doesn't work well when migrations need to open new connections which results in the lock getting dropped.

    In order to fix this we are storing the advisory lock on a new connection with the connection specification name AdisoryLockBase. The caveat is that we need to maintain at least 2 connections to a database while migrations are running in order to do this.

    Eileen M. Uchitelle, John Crepezzi

  • Ensure :reading connections always raise if a write is attempted.

    Now Rails will raise an ActiveRecord::ReadOnlyError if any connection on the reading handler attempts to make a write. If your reading role needs to write you should name the role something other than :reading.

    Eileen M. Uchitelle

  • Enforce fresh ETag header after a collection's contents change by adding ActiveRecord::Relation#cache_key_with_version. This method will be used by ActionController::ConditionalGet to ensure that when collection cache versioning is enabled, requests using ConditionalGet don't return the same ETag header after a collection is modified. Fixes #38078.

    Aaron Lipman

  • A database URL can now contain a querystring value that contains an equal sign. This is needed to support passing PostgresSQL options.

    Joshua Flanagan

  • Retain explicit selections on the base model after applying includes and joins.

    Resolves #34889.

    Patrick Rebsch

Action View

  • annotated_source_code returns an empty array so TemplateErrors without a template in the backtrace are surfaced properly by DebugExceptions.

    Guilherme Mansur, Kasper Timm Hansen

  • Add autoload for SyntaxErrorInTemplate so syntax errors are correctly raised by DebugExceptions.

    Guilherme Mansur, Gannon McGibbon

Action Pack

  • Include child session assertion count in ActionDispatch::IntegrationTest

    IntegrationTest#open_session uses dup to create the new session, which meant it had its own copy of @assertions. This prevented the assertions from being correctly counted and reported.

    Child sessions now have their attr_accessor overriden to delegate to the root session.

    Fixes #32142

    Sam Bostock

Active Job

  • While using perform_enqueued_jobs test helper enqueued jobs must be stored for the later check with assert_enqueued_with.

    Dmitry Polushkin

  • Add queue name support to Que adapter

    Brad Nauta, Wojciech Wnฤ™trzak

Action Mailer

  • No changes.

Action Cable

  • No changes.

Active Storage

  • No changes.

Action Mailbox

  • Update Mandrill inbound email route to respond appropriately to HEAD requests for URL health checks from Mandrill.

    Bill Cromie

Action Text

  • No changes.

Railties

  • Cache compiled view templates when running tests by default

    When generating a new app without --skip-spring, caching classes is disabled in environments/test.rb. This implicitly disables caching view templates too. This change will enable view template caching by adding this to the generated environments/test.rb:

    config.action_view.cache_template_loading = true
    

    Jorge Manrubia

  • Rails::Application#eager_load! is available again to load application code manually as it was possible in previous versions.

    Please, note this is not integrated with the whole eager loading logic that runs when Rails boots with eager loading enabled, you can think of this method as a vanilla recursive code loader.

    This ability has been restored because there are some use cases for it, such as indexers that need to have all application classes and modules in memory.

    Xavier Noria

  • Generators that inherit from NamedBase respect --force option

    Josh Brody

  • Regression fix: The Rake task zeitwerk:check supports eager loaded namespaces which do not have eager load paths, like the recently added i18n. These namespaces are only required to respond to eager_load!.

    Xavier Noria