Ruby on Rails v6.0.1 Release Notes

Release Date: 2019-11-05 // over 4 years ago
  • πŸ‘ Active Support

    πŸ‘ ActiveSupport::SafeBuffer supports Enumerator methods.

    Shugo Maeda

    The Redis cache store fails gracefully when the server returns a "max number of clients reached" error.

    Brandon Medenwald

    πŸ›  Fixed that mutating a value returned by a memory cache store would unexpectedly change the cached value.

    Jonathan Hyman

    0️⃣ The default inflectors in zeitwerk mode support overrides:

    # config/initializers/zeitwerk.rbRails.autoloaders.each do |autoloader| autoloader.inflector.inflect( "html\_parser" =\> "HTMLParser", "ssl\_error" =\> "SSLError" )end
    

    πŸ‘ That way, you can tweak how individual basenames are inflected without touching Active Support inflection rules, which are global. These inflectors fallback to String#camelize, so existing inflection rules are still taken into account for non-overridden basenames.

    Please, check the autoloading guide for zeitwerk mode if you prefer not to depend on String#camelize at all.

    Xavier Noria

    πŸ‘Œ Improve Range#===, Range#include?, and Range#cover? to work with beginless (startless) and endless range targets.

    Allen Hsu, Andrew Hodgkinson

    Don't use Process#clock_gettime(CLOCK_PROCESS_CPUTIME_ID) on Solaris

    Iain Beeston

    Active Model

    • No changes.

    Active Record

    Common Table Expressions are allowed on read-only connections.

    Chris Morris

    πŸ†• New record instantiation respects unscope.

    Ryuta Kamizono

    Fixed a case where find_in_batches could halt too early.

    Takayuki Nakata

    Autosaved associations always perform validations when a custom validation context is used.

    Tekin Suleyman

    πŸ›° sql.active_record notifications now include the :connection in their payloads.

    Eugene Kenny

    βͺ A rollback encountered in an after_commit callback does not reset previously-committed record state.

    Ryuta Kamizono

    πŸ›  Fixed that join order was lost when eager-loading.

    Ryuta Kamizono

    DESCRIBE queries are allowed on read-only connections.

    Dylan Thacker-Smith

    πŸ›  Fixed that records that had been inspected could not be marshaled.

    Eugene Kenny

    πŸ›  The connection pool reaper thread is respawned in forked processes. This fixes that idle connections in forked processes wouldn't be reaped.

    John Hawthorn

    The memoized result of ActiveRecord::Relation#take is properly cleared when ActiveRecord::Relation#reset or ActiveRecord::Relation#reload is called.

    Anmol Arora

    πŸ›  Fixed the performance regression for primary_keys introduced MySQL 8.0.

    Hiroyuki Ishii

    insert, insert_all, upsert, and upsert_all now clear the query cache.

    Eugene Kenny

    Call while_preventing_writes directly from connected_to.

    In some cases application authors want to use the database switching middleware and make explicit calls with connected_to. It's possible for an app to turn off writes and not turn them back on by the time we call connected_to(role: :writing).

    This change allows apps to fix this by assuming if a role is writing we want to allow writes, except in the case it's explicitly turned off.

    Eileen M. Uchitelle

    πŸ‘Œ Improve detection of ActiveRecord::StatementTimeout with mysql2 adapter in the edge case when the query is terminated during filesort.

    Kir Shatrov

    Action View

    UJS avoids Element.closest() for IE 9 compatibility.

    George Claghorn

    Action Pack

    βœ… ActionDispatch::SystemTestCase now inherits from ActiveSupport::TestCase rather than ActionDispatch::IntegrationTest. This permits running jobs in system tests.

    George Claghorn, Edouard Chin

    Registered MIME types may contain extra flags:

    Mime::Type.register "text/html; fragment", :html\_fragment
    

    Aaron Patterson

    πŸ‘· Active Job

    • No changes.

    Action Mailer

    • No changes.

    Action Cable

    • No changes.

    Active Storage

    πŸ‘· ActiveStorage::AnalyzeJobs are discarded on ActiveRecord::RecordNotFound errors.

    George Claghorn

    πŸ›  Blobs are recorded in the database before being uploaded to the service. This fixes that generated blob keys could silently collide, leading to data loss.

    Julik Tarkhanov

    Action Mailbox

    • No changes.

    Action Text

    • No changes.

    Railties

    The zeitwerk:check Rake task reports files outside the app's root directory, as in engines loaded from gems.

    Xavier Noria

    πŸ›  Fixed a possible error when using the evented file update checker.

    Yuji Yaginuma

    βœ… The sqlite3 database files created by the parallel testing feature are included in the default .gitignore file for newly-generated apps.

    Yasuo Honda

    πŸš… rails new generates a .keep file in tmp/pids. This fixes starting a server via rackup instead of rails server.

    Rafael Mendonça França