これはなに
Railsコミッタたちが連載しているThis week in Railsの内容を、簡単な補足と併せて紹介する連載です。社内slackで毎週書いていたものですが、連載力の持ち腐れな気がしてきたので公開することにしました。
引用元
今週のトピック
Ruby on Railsのドキュメンタリー映画が初公開
主演: DHH 草。かっこいい。
Ruby 3.3+の場合、デフォルトでYJITが有効にする
Ruby 3.2のYJITを有効にしたRailsアプリでは、レイテンシが15~25%改善したという公開報告が多数あったが、3.3ではさらに改善されている。もともとDHHは、RailsのパフォーマンスのためにYJITをデフォルトで有効にしたいと投稿していた
Would love to see @yukihiro_matz make YJIT the new default as soon as possible. Such a monumental step forward for Ruby performance with Rails in the real world 🙏
— DHH (@dhh) October 9, 2023
Active Records inspectの出力を設定可能にする
attributes_for_inspectメソッドが使えるようになった
Post.attributes_for_inspect = [:id, :title]
Post.first.inspect
#=> "#<Post id: 1, title:"Hello、World!">"
デフォルトでは、inspectはオブジェクトのid(例えば#<Post id: 1>
)を返すだけ。すべての属性を出力したい場合は、Post.full_inspect
を呼び出していた。
type_for_attributeをActive Modelに移植する
type_for_attribute
がActiveRecord::ModelSchema::ClassMethods
からActiveModel::AttributeRegistration::ClassMethods
に移動し、attribute_types
も定義された。
https://api.rubyonrails.org/classes/ActiveRecord/ModelSchema/ClassMethods.html#method-i-type_for_attribute
Action Mailerのプレビューで、インラインの添付ファイルを通常の添付ファイルとは別にリストアップする
他にもAction Mailer系の修正が何件か
- Action MailerのプレビューでDateヘッダーがある場合、Dateヘッダーから日付を表示(リンク)
- Action Mailerのプレビューで関連する場合のみSMTPエンベロープの受信者を表示(リンク)
システムテストを並列化する前に Selenium driver_path を事前にロードする
webdrivers gemが存在しない場合(Rails 7.1+のデフォルト)、Selenium driver_pathは nil
で始まる。これでは、ドライバが遅延して配置され、システムテストが実行されるまで延期される。並列テストが使用されている場合、これは競合状態を引き起こし、各ワーカープロセスが同時にドライバを解決しようとする。その結果、#49906で説明したようなエラーが発生する。
Active Modelにおける無限大の変更検出の修正
Float::INFINITY値を持つ属性は、同じ値に再割り当てしても変更されたとマークされないようにする