現地時間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:check
rakeタスクがアプリのルートディレクトリの外のファイルもレポートするようになった- #37102
- eventedファイルアップロードチェッカーで発生する可能性のあるエラーを修正(ウォッチ20190930)
- #37053
- パラレルテスト機能で生成されたSQLite3データベースファイルが新規アプリの.gitignoreにデフォルトで含まれるようになった
- @04cfbc8
- tmp/pidsに.keepファイルを生成し、rackupでもサーバーを起動できるよう修正
おたより発掘
変更点がまとまっていておもしろい
Rails 6.0.1がリリース!修正を追ってみました https://t.co/UPsyK61XIv— 安尾友佑 | ラクスル (@yusuke_yasuo) November 10, 2019