1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Ruby on Railsアップデート(YJITのデフォルト有効化 他 2023-11-10)

Last updated at Posted at 2023-11-14

これはなに

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をデフォルトで有効にしたいと投稿していた

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_attributeActiveRecord::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値を持つ属性は、同じ値に再割り当てしても変更されたとマークされないようにする

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?