Ruby on Rails 8 の詳細:新機能と拡張機能
最初の Rails 8 ベータ版が正式にリリースされ、一連のエキサイティングな機能、バグ修正、改善がもたらされました。このバージョンは、Rails 7.2 の基盤に基づいて構築されていますが、Rails 開発をより生産的で楽しいものにするための新機能と最適化が導入されています。
主なハイライトには、手間のかからない導入のための Kamal 2 との統合、新しいデフォルト アセット パイプラインとしての Propshaft の導入、および広範な ActiveRecord の機能強化が含まれます。 Rails 8 では、いくつかの SQLite 統合アップグレードも提供されており、実稼働環境での使用に有効なオプションとなっています。
Rails 8 が提供するすべての機能を詳しく調べてみましょう!
Kamal 2 とスラスターによる簡単な導入
Rails 8 では、Kamal 2 と Thruster を使用してアプリケーションを簡単にデプロイできます。
Kamal 2 は、わずか数分でクラウド VM、ベアメタル サーバー、VP 環境に迅速かつ簡単に導入できるようにすることで、マネージド クラウド サービスやサービスとしてのプラットフォーム (PaaS) プラットフォームへの依存の必要性を減らします。
単一のコマンド (kamal setup) で ) を使用すると、標準の Linux ボックス上に本番環境に対応した Railsenvironment をセットアップできるため、導入が容易になり、コスト効率も高くなります。
また、Kamal 2 は、Rails 専用に構築されたカスタム プロキシである Thruster と統合しており、ダウンタイムなしの導入、HTTP/2 サポート、Let's Encrypt による自動 SSL、Gzip 圧縮、単一サーバー上での複数のアプリの簡単なホスティングをすべて複雑なセットアップなしで実現します。
Kamal 2 と Thruster を使用すると、Rails 8 ではアプリのデプロイがこれまでより簡単になります。別の展開設定を希望する場合は、--skip-kamal を使用してオプトアウトできます。 既存のワークフローを維持するにはフラグを立ててください。
堅牢なアダプターを使用した無駄のないレールの導入
Rails 8 の大きな改善点の 1 つは、一般的な Web アプリケーション要件の実装に必要な追加サービスの数を減らし、デプロイメントを簡素化したことです。
従来、ジョブ キュー、キャッシュ、パブリッシュ/サブメッセージングなどの機能が必要な場合は、補助機能として PostgreSQL などのデータベースと Redis を組み合わせて使用していました。
Rails 8 では、Solid Cable、Solid Cache、Solid Queue という 3 つの新しいデータベース アダプタのおかげで、SQLite だけでこれらすべてを処理できます。
<オル>ソリッド ケーブル これは、実稼働環境における Rails の新しいデフォルトの Action Cable アダプターであり、Redis への共通の依存関係を削除できることを意味します。これはパブリッシュ/サブサーバーとして機能し、SQLite を介した高速ポーリングを使用してアプリと接続されたクライアントの間でメッセージを中継します。ポーリングにもかかわらず、Solid Cable のパフォーマンスはほとんどの状況で Redis と同等です。
ソリッド キャッシュ キャッシュに RAM の代わりにディスク ストレージを使用することで、Redis の必要性がなくなりました。このアプローチにより、パフォーマンスを犠牲にすることなく、より長く保持され、より多くのリクエストを処理できる、より大規模でコスト効率の高いキャッシュが可能になります。また、プライバシー要件を満たすために、暗号化されたストレージと保持ポリシーもサポートしています。
ソリッドキュー FOR UPDATE SKIP LOCKED を使用して、Active Jobbackground 処理用の Redis を置き換えます。 ジョブを効率的に処理するためのメカニズム (PostgreSQL、MySQL、または SQLite と互換性があります)。同時実行制御、再試行、繰り返しジョブなどの重要な機能が含まれており、HEY でその効果が証明されており、現在では 1 日あたり 2,000 万のジョブを管理しています。
これら 3 つのアダプターは、シンプルなアイデアに基づいて設計されています。最新の SSD と NVMe ドライブは、以前はインメモリ ソリューションを必要とした多くのタスクを処理できるほど高速です。これらの高速ドライブを利用することで、Rails は Redis のような個別の RAM ベースのツールの必要性を排除します。
SQLite は本番環境の準備が整いました
Rails 8 は、SQLite アダプターと Ruby ドライバーに関する広範な作業のおかげで、SQLite を軽量な開発ツールから本番環境で使用するための信頼できる選択肢に引き上げました。
上で説明したソリッド アダプターの導入により、SQLite は Action Cable、Rails.cache、Active Job を効果的に強化できるようになり、単なるプロトタイピングやテスト環境を超えてその役割を拡大します。
Rails 8 での SQLite 統合の主な改善点は次のとおりです。
create_virtual_tableを使用した全文検索と仮想テーブルがサポートされるようになりました .- アダプターでは、データ シードのパフォーマンスを向上させるための一括挿入フィクスチャが可能になりました。
- トランザクションのデフォルトは
IMMEDIATE同時実行性を向上させるモード SQLite3::BusyExceptionの変換によるエラー処理の強化ActiveRecord::StatementTimeoutに .
プロップシャフトによる資産パイプラインの新時代
Rails 8 では、長年使用されてきた Sprockets システムに代わる新しいアセット パイプラインのデフォルトとして Propshaft も導入されています。 Sprockets は 10 年以上 Rails 開発者に役立ちましたが、設計されたのは別の時代、つまり JavaScript ビルド ツールが爆発的に普及し、最新のブラウザが改良される前です。
Propshaft は、今日の開発者の中心的なニーズを中心に構築された、資産管理に対するよりシンプルで最新のアプローチを反映しています。その目的は単純です。アセットへの明確なパスを提供し、キャッシュにダイジェスト スタンプを適用することです。
多数の追加タスクを引き受けた Sprockets とは異なり、Propshaft は本質的なものだけに焦点を当てており、アセット パイプラインをスリムに保つという新しい Rails 哲学に自然に適合します (複雑な JavaScript 処理は Esbuild や Vite などの専用ツールに任せます)。
組み込みの認証を簡単に
Rails は、has_secure_password から長年にわたって認証の主要コンポーネントを構築してきました。 Rails 5 から normalizes まで 、generates_token_for とauthenticate_by inRails 7.1.
Rails 8 では、これらすべてのコンポーネントが統合され、安全なセッションベースの認証システムを構築するための簡単な開始点が提供されます。
単一のコマンドを実行するだけで、データベースにバックアップされたセッションとパスワード リセット機能を備えた認証システムに必要なものをすべてセットアップできます。
このコマンドは、モデル、コントローラ、メーラー、ビューなどの主要なファイルを生成します。
これにより、本番環境に対応した安全な認証への迅速な対応が効果的に可能になります。残っているのは、アプリケーションのニーズに合わせてカスタマイズされたユーザー サインアップ フローを統合することだけです。
新しいスクリプト フォルダーとジェネレーター
Rails 8 では新しい script が導入されています データ移行、クリーンアップ タスク、その他のユーティリティ操作など、1 回限りのスクリプトまたは汎用スクリプトを保持する専用のフォルダー。この追加により、これらのスクリプトをきちんと整理し、メインのアプリケーション ロジックから切り離すことができます。
スクリプトの作成を簡単にするために、新しいスクリプト ジェネレーターが利用可能です。簡単なコマンドでスクリプトを生成できます。
これらのコマンドは、対応するスクリプト ファイルを作成し、次のコマンドで実行できます。
この合理化されたアプローチにより、アプリケーションが整理された状態に保たれ、カスタム スクリプトの処理がより便利になり、保守しやすくなります。
アクティブ レコードの大幅な改善
Active Record では、Rails 8 で大幅な機能強化が行われ、パフォーマンスが向上し、移行が簡素化され、トラブルシューティングが改善され、複雑なデータベースのユースケースに対するサポートが向上しました。
以下は、この最新バージョンで導入された主な変更点の一部です。
- Rails 8 は
float4を区別するようになりました。 とfloat8PostgreSQL では。 drop_table複数のテーブルを一度に削除できるようになりました。- PostgreSQL でテーブルを作成する際の、継承やパーティショニングなどの高度なオプションのサポート
- データ シードのパフォーマンスを向上させるために、フィクスチャの一括挿入がサポートされるようになりました。
- 新しいデータベースの移行は、移行を実行する前にデータベース スキーマをロードすることで開始されるようになりました。
create_schemaとdrop_schema操作を元に戻せるようになりました。- Rails 8 では、datetimewith 精度などの進歩により、MySQL 5.6.4 以降が必要になりました。
- 開発環境ではクエリ ログ タグがデフォルトで有効になっており、SQL ステートメントをアプリケーション コードまで追跡し、どのデータベースが使用されているかを識別します。
まとめ
Rails 8 では、Kamal による簡単なデプロイメントや最新のアセット パイプラインから、ActiveRecord の大幅な機能強化や SQLite の運用機能の改善に至るまで、幅広い影響力のあるアップデートが導入されています。
これらの進歩により、開発者の生産性が向上するだけでなく、最新のベスト プラクティスにも適合し、インフラストラクチャの複雑さに対処する代わりにアプリケーションの構築に集中できるようになります。
すべての新機能、最適化、変更の詳細なリストについては、Rails 8 の公式リリース ノートを確認してください。
Rails への貢献に参加したい場合は、Rails GitHub リポジトリにアクセスして未解決の問題を調べ、貢献ガイドラインを確認してください。
読んでいただきありがとうございます!
追記Ruby Magic の投稿を報道後すぐに読みたい場合は、Ruby Magic ニュースレターを購読して、投稿を 1 つも見逃さないようにしてください。
ダミロラ・オラトゥンジ
Damilola は、ナイジェリアのラゴスを拠点とするフリーランスのテクニカル ライター兼ソフトウェア開発者です。彼は JavaScript と Node.js を専門とし、開発者向けに簡潔で実用的な記事を提供することを目指しています。執筆やコーディング以外の時間は、読書、ゲーム、旅行を楽しんでいます。
ダミロラ・オラトゥンジによるすべての記事
-
Ruby on Rails をマスターする:フレームワークを学習するための包括的なガイド
Hulu、GitHub、Fiverr など、あなたがやり取りする主要な Web サイトの多くは、Ruby on Rails を使用して構築されています。 Ruby プログラミング言語で書かれた「サーバーサイド」フレームワークである Ruby on Rails を使用すると、Web アプリケーションを強化し、ユーザー情報をデータベースに保存する Facebook や Instagram などの Web サイトにフロントエンド コードを接続できます。 Web サイトに情報を保存するにはデータベースが必要であるため、Ruby on Rails を使用するとこれが可能になります。 Ruby on R
-
Byebug、Rails、Powを使用したリモートデバッグ
byebugをこれまでに見たことがない場合は、チェックすることをお勧めします。これは、Ruby2.x用の優れたデバッガーです。その作者の言葉で: Byebugは、Ruby2用の使いやすく機能豊富なデバッガーです。実行制御に新しいTracePointAPIを使用し、コールスタックナビゲーションに新しいDebug Inspector APIを使用するため、内部のコアソースに依存しません。 C拡張機能として開発されているため、高速です。また、完全なテストスイートがあるため、信頼性があります。 基本的なセットアップは非常に簡単です。宝石をインストールするだけです。 byebugを使用する場合 コー