Rails7の新機能を読む会

これは何

Rails6.1から7.0にアップデート中なので、今のうちに新機能や差分を知る会

対象

  • Rails書いたことがある方
  • Rails7の新機能や6との違いをざっくり知りたい方

方法

  • 以下を順々に読んでいく
で触れた内容を中心に話します!
 
Ruby on Rails 7の主要な新機能・機能追加・変更点 - Qiita
Ruby on Rails(以下Rails)の最新バージョンである7.0(以下Rails 7)が2021年12月15日に リリース されました。 Rails 7では、JavaScriptフロントエンドの大幅な刷新、CSS BundlingによるTailwind CSSやPostCSSのサポートを含めた、メジャーバージョンアップグレードにふさわしい機能強化が行われています。 本記事では、 Railsの公式ブログや Railsガイド、GitHubのRailsプロジェクトの Issuesや Pull Requests の内容をもとに、Rails 7の主要な新機能・機能追加・変更点の紹介を行います。 ※ 以前のバージョンのRailsの主要な新機能・機能追加・変更点については以下を参照してください。 Rails 7を動かすには、Ruby 2.7.0以上が必要になります。可能であれば、Ruby 3.0系列にアップグレードを行ってください。Ruby 3.1については、Rails 7.0.0では非対応ですが、今後サポートされる予定です。 Rails 7のリリース後は、Railsのバージョン7.0系列と、6.1系列がセキュリティアップデートの対象となります。それより前の6.0系列、5.2系列についても深刻なセキュリティ問題に対する修正は行われますが、サポート期間が短くなっていますので、注意してください。 参考 ES6(ECMAScript 6)/ ESM(ECMAScript modules) 、HTTP/2、 import maps を使用することで、Node.jsをインストールせずにモダンなJavaScriptをRailsアプリケーションで利用することが可能になりました。 以前のRailsのバージョンでは、Webpacker経由でWebpackを使用してJavaScriptファイルを依存するライブラリと共に結合・処理してその結果のファイルを使用していました。 最近では、ES6 / ESMのブラウザサポートによってJavaScriptのコンパイル・結合が不要になり、HTTP/2で配信することで小さな複数のファイルのままでもネットワーク経由での読み込み速度が落ちなくなりました。また、import mapsを使用することでライブラリの名前解決を行なって直接CDNなどから取得できるようになりました。 Rails 7では上記の技術的進歩を踏まえた上で、標準ではWebpacker / Node.jsを使用しなくても良いようになっています。(以前のように使用することも可能です。) デフォルトでは、 Hotwire、 Stimulus、 Turbo といったライブラリがインストールされ、リッチなUI/UXを実現するSPA(シングルページアプリケーション)を実装する際に利用することができます。(Webpackerはデフォルトではインストールされなくなりました。) cssbundling-railsというGemをインストールすることで、 Tailwind CSS、 Bootstrap、 Bulma、 PostCSS、 Dart Sass を使用して、CSSファイルを結合・処理し、Railsのアセットパイプラインに載せることが可能になりました。 使用するCSSライブラリは、アプリケーションの新規作成時に以下のようにして、--css オプションで指定することができます。例えば、Tailwind CSSを指定するには以下のようにします。 また、既存のアプリケーションでは、Gemfileに以下の行を追加して、 以下のコマンドを実行することで、インストールと初期設定を行うことが可能です。 これにより、 tailwind.config.js などの設定ファイルが生成されます。 開発時には yarn build:css --watchコマンドを実行することで、リアルタイムでCSSファイルの処理を行いながらブラウザで結果を確認することができます。デプロイ時には、 assets:precompile 実行時にCSSファイルの処理が行われます。 参考 アプリケーション内でActive Recordの属性を暗号化した状態でDBに保存したり、読み出しを行うことができるようになりました。これによって、意図せずにユーザーの機密情報をアプリケーションのログや外部に公開してしまわないように、属性レベルできめ細かい制御が行うことができます。 設定を行うには bin/rails db:encryption:initのコマンドを実行して、ランダムなキーを生成し、その結果を bin/rails credentials:edit ...
 
 

宿題

なし(いつでも自由参加)