現地時間11/5のリリースでした。そういえば昨日Dockerでrails newしてたら6.0.1だったような気がしてましたが、見返したら本当でした。
Rails 6.0.1が出てた。昨日たまたまRailsのバージョンアップをやってて、「あれ?いつのまに6.0.1が出たんだ?」と思いながら6.0.1をインストールしたんだけど、つい最近のことだったみたい。
Rails 6.0.1 released | Riding Rails https://t.co/woOxdmknh4
— Junichi Ito (伊藤淳一) (@jnchito) November 7, 2019
せっかくなので、これまで週刊Railsウォッチの「先週の改修」で追ったプルリクもたどってみました。全変更履歴だと多すぎてつらいので、commits/v6.0.1/activesupportのようにライブラリごとに履歴を追う方がやりやすいことがだんだんわかってきました。
ほとんどがバグ修正でした。セキュリティ修正はchangelogレベルでは見当たりません。
Active Support
- #37494
- ActiveSupport::SafeBufferで- Enumeratorのメソッドをサポート(ウォッチ20191028)
- #37085
- Redisのキャッシュストアが「max number of clients reached」時に安全にfailするよう修正(ウォッチ20191007)
- #37587?
- メモリキャッシュストアから返された値を改変するとキャッシュされた値まで改変される問題を修正
- @8237c4d
- デフォルトのinflectorをzeitwerkモードでオーバーライド可能になり、ガイドも更新(ウォッチ20191105)
# config/initializers/zeitwerk.rb
Rails.autoloaders.each do |autoloader|
  autoloader.inflector.inflect(
    "html_parser" => "HTMLParser",
    "ssl_error"   => "SSLError"
  )
end
- #37178など
- Range#===、- Range#include?、- Range#cover?を開始値や終了値の省略に対応(ウォッチ20190729)
- #37114
- Process#clock_gettime CLOCK_PROCESS_CPUTIME_IDをSolarisで無効に(ウォッチ20190909)
Active Record
- #37525
- PostgreSQLのリードオンリークエリでCTE(Common Table Expressions)を利用できるようになった
- #37511
- 関連付けリレーションでのインスタンス作成でunscopeが効くように修正(ウォッチ20191028)
- #37434
- find_in_batchesの停止が早すぎるエッジケースを修正(ウォッチ20191021)
- #37295
- カスタムバリデーションのコンテキストでautosaveされた関連付けが常にバリデーションされるよう修正(参考: ウォッチ20191015)
- #37328
- sql.active_record通知のペイロードに- :connectionを含めた
- @39730bd
- after_commitコールバック内でのロールバックで、コミット済みのレコードのステートをロールバックしないよう修正
- #37235
- eager_load時の- joinsの順序をできるだけ維持するよう修正(参考: ウォッチ20191015)
- #37240
- リードオンリー接続でDESCRIBEクエリを利用できるようになった
- #37153
- inspectされたレコードがマーシャリングされないことがあったのを修正
- 36998など
- コネクションプールreaperのスレッドがプロセスのfork再度spawnされる問題を修正し、forkしたプロセスのアイドリングコネクションがreaperで処理されないようになった(ウォッチ20190826など)
- #36985
- ActiveRecord::Relation#takeの結果のメモ化が- ActiveRecord::Relation#resetや- ActiveRecord::Relation#reloadで正しくクリアされるよう修正(ウォッチ)
- #37465
- MySQL 8.0で導入されたprimary_keysやforeign_keysのパフォーマンスリグレッションを修正
- #37154
- insert、- insert_all、- upsert、- upsert_allでクエリキャッシュがクリアされるよう修正(ウォッチ20190917)
- @66bc2ff
- connected_toから- while_preventing_writesを直接呼べるようになった
アプリケーションの作者がデータベース切り替えミドルウェアを用いて
connected_toで明示的に呼び出したい場合がある。アプリの書き込みをオフにしてconnected_to(role: :writing)を呼ぶまでオンにしないようにできる。
今回の変更では、書き込みを許可したいロールが書き込みを行うことを前提とすることでアプリを修正できるようにした(書き込みを明示的にオフにしている場合を除く)。
- #36932
- mysql2アダプタでファイルソート中にクエリが終了するエッジケースでのActiveRecord::StatementTimeoutによるエラー検出を改善
Action View
- @b425af0
- IE 9互換のためUJSでElement.closest()を回避(ウォッチ20191007)
Action Pack
- #36283
- ActionDispatch::SystemTestCaseが- ActionDispatch::IntegrationTestではなく- ActiveSupport::TestCaseを継承するようになり、システムテストでジョブを実行できるようになった
- #36996など
- 登録済みMIMEタイプにフラグを追加できるようになった(ウォッチ20190902)
Mime::Type.register "text/html; fragment", :html_fragment
Active Storage
- @06f8baf:
- ActiveRecord::RecordNotFoundエラーで- ActiveStorage::AnalyzeJobsをdiscardするようにした
- #34827
- サービスにアップロードする前にblobがデータベースに常に記録されるようになったことで、生成されたblobのキーが衝突してデータ喪失につながる可能性が修正された
Railties
- @3ac9e22
- zeitwerk:checkrakeタスクがアプリのルートディレクトリの外のファイルもレポートするようになった
- #37102
- eventedファイルアップロードチェッカーで発生する可能性のあるエラーを修正(ウォッチ20190930)
- #37053
- パラレルテスト機能で生成されたSQLite3データベースファイルが新規アプリの.gitignoreにデフォルトで含まれるようになった
- @04cfbc8
- tmp/pidsに.keepファイルを生成し、rackupでもサーバーを起動できるよう修正
おたより発掘
変更点がまとまっていておもしろい
Rails 6.0.1がリリース!修正を追ってみました https://t.co/UPsyK61XIv— 安尾友佑 | ラクスル (@yusuke_yasuo) November 10, 2019
 
       
                      