zenet_logo

-株式会社ゼネット技術ブログ-

Rails 7.2 Beta 1を確認してみよう!

ゼネットの土屋です。

2024/05/30にRails 7.2 Beta 1がリリースされました。
気になる変更点を確認していきたいと思います!
rubyonrails.org

In Rails 7.2, YJIT is enabled by default if running Ruby 3.3 or newer.

Ruby 3.3以降を利用している環境ではデフォルトでYJITが有効となるようです。
過去にMJITではRailsのパフォーマンスが低下するというような話もありましたが、YJITではパフォーマンスが向上するとされており、「YJITが当たり前」の時代が来たかという感じですね。

config/initializers/new_framework_defaults_7_2.rbに記述があるので、load_defaults7.2とすることで反映されます。
YJITを無効にしたい場合はRails.application.config.yjit = falseを記述するだけでよさそうです。

###
# Enables YJIT as of Ruby 3.3, to bring sizeable performance improvements. If you are
# deploying to a memory constrained environment you may want to set this to `false`.
#++
# Rails.application.config.yjit = true

github.com

ただ「Ruby 3.3以降」と説明があるわりには問答無用で設定されているように見えるのが気になりますね。。

self.yjit = true

github.com

Add browser version guard by default.

渡されたハッシュまたは名前付きセットに一致するブラウザで、指定されたバージョンより低い場合に406を返す機構が追加されました。

class ApplicationController < ActionController::Base
  allow_browser versions: :modern
end

class ApplicationController < ActionController::Base
  allow_browser versions: { safari: 16.4, firefox: 121, ie: false }
end

:modernにはデフォルトでブラウザとバージョンが指定されているようです。
ブラウザの制約などがなければ:modernを指定するのがよさそうですね。

SETS = {
  modern: { safari: 17.2, chrome: 120, firefox: 121, opera: 106, ie: false }
}

github.com

Make Ruby 3.1 the new minimum version.

Rails 7.1まではRuby 2.7以降が必須とされていましたが、Rails 7.2からはRuby 3.1以降が必須とされるようです。

余談ですが、Rails 8.0からはRuby 3.3以降を必須とすることが既に公言されています。
Rails 8 will target Ruby 3.3+ only for new apps

Default Progressive Web Application (PWA) files

PWAで必要なmanifest.jsonservice-worker.jsがデフォルトで生成されるようになりました。
app/viewsの配下にpwaが生成され、その中に上記ファイルが生成されます。
また、PWAはERBで管理できるようです。

Per transaction commit and rollback callbacks

ActiveRecord::Base.transactionごとにコールバックを登録できるようになりました。

User.transaction do |transaction|
  user.update(email: params[:email])

  transaction.after_commit do
    UserNotificationMailer.with(user: user).deliver_later
  end
end

その他の変更点

次にMajor Featuresで触れられていない変更点についてChangeLogを確認しながらピックアップしていきます。

以下については特質すべき大きな変更はなかったので割愛します。

おわりに

Rails 7.2 Beta 1の変更内容を確認していきました。
Rails 7.1の正式リリース(2023/10/12)はBetaがリリース(2023/09/13)されてから1ヶ月だったので、Rails 7.2の正式リリースも早ければ6月中にされるかもしれませんね。