Ruby on Rails 7.0.0.rc1がリリースされました。
I just released Rails 7.0.0.rc1. The plan is to have the final version before Christmas. Please give it a try and report any issues you find so we can have a smooth final release https://t.co/RXf9GOFPVR
— Rafael França 🇧🇷 (@rafaelfranca) December 6, 2021
英語版Changelogをまとめて見るにはGItHubのリリースタグ↓が便利です。v7.0.0.rc1
タグの日付は日本時間の12月7日6:39でした。
詳しくは以下のコミットリストをご覧ください。
現時点のマイルストーンには8件のissueがあります。
なお、Rails 7のアセットパイプライン周りについては以下の記事がおすすめです。
参考: Rails 7.0でアセットパイプラインはどう変わるか | Wantedly Engineer Blog
🔗 更新の概要
以下は上記リリースノートの要点に補足を加えたものです。
フロントエンドへの新たなる回答
- ブラウザでのES6/ESMサポート改善
- HTTP/2を広範囲に採用
- import mapsの導入(importmap-rails gem)
- Node(npmパッケージ)なしのアプローチを可能に
node_modules
に大量の依存関係を置かないアプローチ
参考: JavaScriptのバンドルとトランスパイルが不要なモダンWebアプリ | POSTD
参考: Rails 7 will have three great answers to JavaScript in 2021+
- HotwireとStimulusとTurboの組み合わせにより、Railsアプリケーションでのフロントエンドのセットアップの完成度が最も高まった
参考: HTML Over The Wire | Hotwire
参考: Stimulus: A modest JavaScript framework for the HTML you already have.
参考: Turbo: The speed of a single-page web application without having to write any JavaScript.
- Railsと、JavaScriptやCSSとのバンドル方法が、import mapsとjsbundling-railsやcssbundling-railsなどによって大きく改善された
Active Recordの暗号化機能
参考: Active Record Encryption — Ruby on Rails Guides
marginalia gemがActive RecordのQueryLogに
- Basecampから切り出されたmarginalia gemがActive RecordのQueryLogモジュールとして取り入れられた
参考: Mini tech note: MySQL query comments in Rails – Signal v. Noise
Relation#load_async
- コントローラのアクションで2つの無関係なクエリを読み込む必要がある場合、
Relation#load_async
でコンカレントに読み込めるようになった(#41372)
Zeitwerkに移行完了
- オートローダーがZeitwerkのみとなった
参考: 定数の自動読み込みと再読み込み (Zeitwerk) - Railsガイド
参考: Upgrading Ruby on Rails — Ruby on Rails Guides
その他
- spring gemがデフォルトではなくなった
- (Gemfileではコメントアウトされます)
- コントローラのアクション内でオンザフライ生成されるファイルを
ActionController::Live#send_stream
で手軽にストリーミング(#41488) - CPUコア数とテスト数を比較してテストのパラレル化をスケールできるようになった(#42761)
- Active StorageのデフォルトのvariantプロセッサがImageMagickからlibvipsに変更(#41488)
参考: Rails 7.0.0.rc1のお試し
YJITを有効にしたRuby 3.1.0-preview1上でRails 7.0.0.rc1のrails new
を手軽に試すためのdocker-compose環境を以下のリポジトリに取り急ぎ作りました。
以下は少し試してみた結果です。
- propshaftはRails 7.0.0.rc1ではデフォルトでは入りませんでした
rails new
に-a propshaft
オプションを付けて実行するとインストールされます
- 週刊Railsウォッチ20211206で取り上げたkredisが、以下のようにコメントアウトの形でGemfileに入っていました
# Gemfile
# Use Kredis to get higher-level data types in Redis [https://github.com/rails/kredis]
# gem "kredis"