8月10日、Rails 7.2が公開された。
新機能や改良点の一部は以下の通りである。
本記事は、以下のエキスパートに監修していただきました:
1. より良いプロダクションデフォルト
Rails 7.2には、アプリケーションをより効率的に構築するための改善されたプロダクションデフォルトが含まれている。主な変更点は以下の通りである。
YJITのデフォルト有効化
YJITはRuby 3.1以降で利用可能なRubyのJITコンパイラであり、Railsアプリケーションのパフォーマンスを15-25%向上させることができる。Rails 7.2では、Ruby 3.3以上を使用している場合、YJITがデフォルトで有効になる。Pumaのスレッド数のデフォルト変更
プロダクションでの経験に基づき、Pumaのスレッド数のデフォルトを5から3に変更した。この変更は、スレッド数が多すぎる場合にGlobal VM Lock (GVL)の解放を待つ時間を短縮し、レイテンシ(リクエスト応答時間)を改善するためである。Dockerfileの最適化
Railsが生成するデフォルトのDockerfileには、メモリ割り当てを最適化するためにjemallocが含まれるようになった。
2. 開発用コンテナの設定
Rails 7.2では、アプリケーションの開発用コンテナ設定を生成する機能が追加された。この設定には、.devcontainer
フォルダ内にDockerfile
、docker-compose.yml
、devcontainer.json
ファイルが含まれている。デフォルトで以下のコンテナが含まれる。
- Redisコンテナ(Kredis、Action Cableなどで使用)
- データベース(SQLite、Postgres、MySQL、またはMariaDB)
- システムテスト用のヘッドレスChromeコンテナ
- ローカルディスクを使用したActive Storageとプレビュー機能
新しいアプリケーションを開発用コンテナで生成するには、以下のコマンドを実行する:
rails new myapp --devcontainer
既存のアプリケーションでは、新しく利用可能なdevcontainer
コマンドを使用する。
詳細については、Getting Started with Dev Containersガイドを参照してほしい。
3. Railsガイドの新しいデザイン
Rails 7.0が2021年12月にリリースされた際に新しいホームページとブートスクリーンが導入されたが、ガイドのデザインは2009年以来ほとんど変更されていなかった。今回、ドキュメントを最新のものにするための作業の一環として、ガイドのデザインも現代的でシンプルかつ新鮮なものに更新された。
新しいデザインの変更点は以下の通りである。
- よりクリーンでシンプルなデザイン
- フォント、カラースキーム、ロゴがホームページと一貫したものに
- 更新されたアイコン
- 簡素化されたナビゲーション
- スクロール時に固定される「Chapters」ナビバー
詳細はブログポストを参照。
その他の改善点
Rails 7.2には他にも多くの改善点や新機能が含まれている。以下はその一部である。
- ブラウザバージョンガードの追加
- Ruby 3.1を新しい最小バージョンとする
- デフォルトのプログレッシブウェブアプリケーション(PWA)ファイル
- デフォルトでomakase RuboCopルールを追加
- 新しいアプリケーションにデフォルトでGitHub CIワークフローを追加
- 新しいアプリケーションにデフォルトでBrakemanを追加
- トランザクション内でのジョブのスケジュールを防止
- トランザクションごとのコミットおよびロールバックコールバック
bin/setup
でpuma-dev設定を提案
詳細はRails 7.2リリースノートを参照していただきたい。