9月28日、Railsは最新バージョンとなる「Rails 8.0 Beta 1」を発表した。このリリースは、PaaS(プラットフォーム・アズ・ア・サービス)を必要とせず、現代的なウェブアプリケーションの展開をより簡便にすることを目的としている。
多くの開発者は、迅速で安全かつアップデート可能なアプリケーションを展開するために、PaaSに依存することが一般的であったが、Rails 8.0 Beta 1はこれを変えることを目指している。このバージョンでは、オープンソースの力を借りて、展開の複雑さを大幅に軽減し、開発者が高価なサービスを利用せずにアプリケーションを展開できるようにしている。
Kamal 2 + Thrusterの登場
Rails 8には、新しいデプロイメントツールであるKamal 2がプリインストールされており、クラウドVMや自社のハードウェアに簡単にアプリケーションを展開できる。kamal setup
コマンド一つで、Linuxボックスをアプリケーションサーバーに変換し、わずか数分で本番環境へ移行可能である。さらに、Thrusterという新しいプロキシも導入され、Pumaウェブサーバーの前に配置されることで、X-Sendfileアクセラレーション、アセットキャッシング、アセット圧縮が可能となり、Nginxなどの外部ウェブサーバーが不要になる。
また、Kamal 2にはKamal Proxyも含まれており、ゼロダウンタイムでのデプロイを実現する。これにより、SSL証明書の自動発行や複数アプリケーションのサポートも可能で、複雑な設定を必要としない。
依存関係の削減と新しいSolidアダプター
Rails 8.0では、デプロイを簡略化するため、従来必要とされていた外部サービスを削減している。Solid Cable、Solid Cache、Solid Queueという3つの新しいデータベースベースのアダプターが導入され、これによりRedisやMemcachedなどの外部サービスが不要となった。これらは全てSQLite上で動作し、高速かつ安定したパフォーマンスを提供する。
Solid Cable
Solid Cableは、WebSocketメッセージの送受信においてRedisの役割を果たす。これにより、WebSocket通信がSQLite上で実行され、従来のRedisと同等の速度を提供する。
Solid Cache
Solid Cacheは、HTMLフラグメントキャッシュの保存に使用されるが、RedisやMemcachedに代わり、ディスク上で大容量のキャッシュを保存する。
Solid Queue
Solid Queueは、ジョブキューを管理するために使用され、RedisやResque、Sidekiqなどのジョブランナーを必要としない。SQLiteやMySQL上で動作し、シンプルな設定で高度なキュー管理が可能となっている。
SQLiteの本番環境対応
SQLiteを本番環境で使用できるようにするため、Rails 8では多くの改善が行われた。これにより、軽量で使いやすいデータベースを使用したアプリケーションの展開が可能になり、特に小規模なプロジェクトにおいてはコスト効率の良い選択肢となる。
Sprocketsの置き換え
Rails 8では、従来のアセットパイプライン「Sprockets」に代わり、Propshaftが導入された。これにより、アセットのロードパスとダイジェスト付きのスタンプを簡単に管理し、よりシンプルな構成でアセット管理が可能となる。
認証システムの生成
Rails 8では、認証システムの生成も簡単になっている。bin/rails generate authentication
コマンドを使用することで、セッションベースの認証システムを自動的に作成でき、開発者は最小限の作業で堅牢な認証機能を導入できる。
詳細は、Rails 8.0 Beta 1: No PaaS Requiredを参照していただきたい。