Tech Racho エンジニアの「?」を「!」に。
  • Ruby / Rails関連

Rails 7.0.0.rc1がリリースされました

Ruby on Rails 7.0.0.rc1がリリースされました。

英語版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に大量の依存関係を置かないアプローチ

rails/importmap-rails - GitHub

参考: JavaScriptのバンドルとトランスパイルが不要なモダンWebアプリ | POSTD
参考: Rails 7 will have three great answers to JavaScript in 2021+

Rails 7: importmap-rails gem README(翻訳)

  • 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などによって大きく改善された
    • jsbundling-rails: –javascript バンドラー名-j JSバンドラー名も可)で以下のJSバンドラーを指定可能
    • CSSバンドラーを指定できるようになった
    • cssbundling-rails: –css バンドラー名-c CSSバンドラー名も可)で以下のCSSバンドラーを指定可能

rails/jsbundling-rails - GitHub

rails/cssbundling-rails - GitHub

Active Recordの暗号化機能

Rails 7のActive Record暗号化機能(翻訳)

参考: Active Record Encryption — Ruby on Rails Guides

marginalia gemがActive RecordのQueryLogに

  • Basecampから切り出されたmarginalia gemがActive RecordのQueryLogモジュールとして取り入れられた

basecamp/marginalia - GitHub

参考: Mini tech note: MySQL query comments in Rails – Signal v. Noise

Relation#load_async

  • コントローラのアクションで2つの無関係なクエリを読み込む必要がある場合、Relation#load_asyncでコンカレントに読み込めるようになった(#41372

Zeitwerkに移行完了

  • オートローダーがZeitwerkのみとなった

fxn/zeitwerk - GitHub

参考: 定数の自動読み込みと再読み込み (Zeitwerk) - Railsガイド
参考: Upgrading Ruby on Rails — Ruby on Rails Guides

その他

  • spring gemがデフォルトではなくなった
    • (Gemfileではコメントアウトされます)

rails/spring - GitHub

  • コントローラのアクション内でオンザフライ生成されるファイルをActionController::Live#send_streamで手軽にストリーミング(#41488
  • CPUコア数とテスト数を比較してテストのパラレル化をスケールできるようになった(#42761
  • Active StorageのデフォルトのvariantプロセッサがImageMagickからlibvipsに変更(#41488

libvips/libvips - GitHub

参考: Rails 7.0.0.rc1のお試し

YJITを有効にしたRuby 3.1.0-preview1上でRails 7.0.0.rc1のrails newを手軽に試すためのdocker-compose環境を以下のリポジトリに取り急ぎ作りました。

hachi8833/rails7rc1_ruby310p1 - GitHub

以下は少し試してみた結果です。

  • propshaftはRails 7.0.0.rc1ではデフォルトでは入りませんでした
    • rails new-a propshaftオプションを付けて実行するとインストールされます

rails/propshaft - GitHub

# Gemfile
# Use Kredis to get higher-level data types in Redis [https://github.com/rails/kredis]
# gem "kredis"

rails/kredis - GitHub

関連記事

Rails 7 Alpha 1、2がリリースされました(リリースノート翻訳)


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。