ゼネットの土屋です。
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_defaults
を7.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
ただ「Ruby 3.3以降」と説明があるわりには問答無用で設定されているように見えるのが気になりますね。。
self.yjit = true
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 } }
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.json
とservice-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/actionpack/CHANGELOG.md at v7.2.0.beta1 · rails/rails · GitHub
ActionController::Parameters
とHash
の比較ができなくなりました。
- rails/activerecord/CHANGELOG.md at v7.2.0.beta1 · rails/rails · GitHub
Base.clear_all_connections!
、Base.clear_active_connections!
、Base.clear_reloadable_connections!
、Base.flush_idle_connections!
が削除され、Base.connection_handler.xxx
のようにconnection_handler
経由でメソッド呼び出しすることが推奨されるようになりました。
- rails/railties/CHANGELOG.md at v7.2.0.beta1 · rails/rails · GitHub
bin/rails app:update
に--skip
オプションなどが追加され、「skip:既存のファイルへのすべての変更を拒否」などが可能となりました。
以下については特質すべき大きな変更はなかったので割愛します。
- rails/actioncable/CHANGELOG.md at v7.2.0.beta1 · rails/rails · GitHub
- rails/actionmailbox/CHANGELOG.md at v7.2.0.beta1 · rails/rails · GitHub
- rails/actionmailer/CHANGELOG.md at v7.2.0.beta1 · rails/rails · GitHub
- rails/actiontext/CHANGELOG.md at v7.2.0.beta1 · rails/rails · GitHub
- rails/actionview/CHANGELOG.md at v7.2.0.beta1 · rails/rails · GitHub
- rails/activejob/CHANGELOG.md at v7.2.0.beta1 · rails/rails · GitHub
- rails/activemodel/CHANGELOG.md at v7.2.0.beta1 · rails/rails · GitHub
- rails/activestorage/CHANGELOG.md at v7.2.0.beta1 · rails/rails · GitHub
- rails/activesupport/CHANGELOG.md at v7.2.0.beta1 · rails/rails · GitHub
おわりに
Rails 7.2 Beta 1の変更内容を確認していきました。
Rails 7.1の正式リリース(2023/10/12)はBetaがリリース(2023/09/13)されてから1ヶ月だったので、Rails 7.2の正式リリースも早ければ6月中にされるかもしれませんね。