【メンテナンスのお知らせ】2025年10月26日(日)4:30~5:00の間メンテナンスのためサイトにアクセスできなくなります。

1 Rails 8.0にアップグレードする

既存のアプリケーションをアップグレードするのであれば、その前に質のよいテストカバレッジを用意するのはよい考えです。アプリケーションがRails 7.2までアップグレードされていない場合は先にそれを完了し、アプリケーションが正常に動作することを十分確認してからRails 8.0にアップデートしてください。アップグレードの注意点などについてはRailsアップグレードガイドを参照してください。

2 主要な機能

2.1 Kamal 2

アプリケーションをデプロイするツールであるKamal 2がRailsにプリインストールされました。Kamalを使うと、新品のLinuxマシンをkamal setupコマンド1つでアプリケーションサーバーやアクセサリサーバーに変えます。

Kamal 2には、Kamal Proxyと呼ばれるプロキシも含まれています。これは、従来起動時に用いられていた汎用のTraefikオプションを置き換えたものです。

2.2 Thruster

Dockerfileがアップグレードされ、Thrusterと呼ばれる新しいプロキシが含まれるようになりました。これはPuma Webサーバーの手前に配置され、X-Sendfileアクセラレーション、アセットキャッシュ、アセット圧縮を提供します。

2.3 Solid Cable

Solid Cableは、Redisに代わる pub/subサーバーとして機能し、アプリケーションからのWebSocketメッセージを、異なるプロセスに接続されたクライアントに中継します。Solid Cableは、送信されたメッセージをデフォルトで1日間データベースに保持します。

2.4 Solid Cache

Solid Cacheは、特にHTMLフラグメントキャッシュを保存するためにRedisまたはMemcachedのいずれかを置き換えます。

2.5 Solid Queue

Solid Queueは、Redisと、Resque、Delayed Job、Sidekiqなどの独立したジョブ実行フレームワークを不要にします。

Solid Queueは、高パフォーマンス環境向けにFOR UPDATE SKIP LOCKEDという新しいメカニズムを基盤としています(これはPostgreSQL 9.5で初めて導入され、現在ではMySQL 8.0以降でも利用可能)。Solid QueueはSQLiteでも動作します。

2.6 Propshaft

Propshaftは、古いSprocketsシステムに代わってデフォルトのアセットパイプラインとなりました。

2.7 認証システムジェネレータ

認証システムジェネレータが追加されました(#52328)これを元にして、セッションベース、パスワードリセット可能、メタデータ追跡機能を持つ認証システムを構築できます。

3 Railties

変更点について詳しくはChangelogを参照してください。

3.1 削除されたもの

  • 非推奨化されていたconfig.read_encrypted_secretsを削除。

  • 非推奨化されていたrails/console/appファイルを削除

  • 非推奨化されていたrails/console/helpersファイルを削除。

  • Rails::ConsoleMethodsによるRailsコンソール拡張のサポート(非推奨化済み)を削除。

3.2 非推奨化

  • "rails/console/methods"requireするサポートを非推奨化。

  • STATS_DIRECTORIESの変更を非推奨化。今後はRails::CodeStatistics.register_directoryに置き換えられる。

  • bin/rake statsを非推奨化。今後はbin/rails statsを使うこと。

3.3 主な変更点

  • Regexp.timeoutがデフォルトで1に設定されるようになった(Regexp DoS攻撃に対するセキュリティ強化のため)。

4 Action Cable

変更点について詳しくはChangelogを参照してください。

4.1 削除されたもの

4.2 非推奨化

4.3 主な変更

5 Action Pack

変更点について詳しくはChangelogを参照してください。

5.1 削除されたもの

  • Rails.application.config.action_controller.allow_deprecated_parameters_hash_equalityを削除。

5.2 非推奨化

  • ルーティング高速化のため、複数のパスを指定するルーティングを非推奨化。

5.3 主な変更

  • 従来よりも安全かつ明示的なパラメータ処理メソッドであるparams#expectが導入されました。従来のparams.expect(table: [ :attr ])をシンプルなparams.require(:table).permit(:attr)に置き換えられます。

6 Action View

変更点について詳しくはChangelogを参照してください。

6.1 削除されたもの

  • form_withmodel:引数にnilを渡す非推奨のサポートを削除。

  • tagビルダーで空のタグ要素にコンテンツを渡す非推奨のサポートを削除。

6.2 非推奨化

6.3 主な変更

7 Action Mailer

変更点について詳しくはChangelogを参照してください。

7.1 削除されたもの

7.2 非推奨化

7.3 主な変更

8 Active Record

変更点について詳しくはChangelogを参照してください。

8.1 削除されたもの

  • 非推奨化されていたconfig.active_record.commit_transaction_on_non_local_returnを削除。

  • 非推奨化されていたconfig.active_record.allow_deprecated_singular_associations_nameを削除。

  • Active Recordに登録されていないデータベースを探索するサポート(非推奨化)を削除。

  • enumをキーワード引数で定義するサポート(非推奨化済み)を削除。

  • 非推奨化されていたconfig.active_record.warn_on_records_fetched_greater_thanを削除。

  • 非推奨化されていたconfig.active_record.sqlite3_deprecated_warningを削除。

  • 非推奨化されていたActiveRecord::ConnectionAdapters::ConnectionPool#connectionを削除。

  • cache_dump_filenameにデータベース名を渡すサポート(非推奨化済み)を削除。

  • ENV["SCHEMA_CACHE"]を設定するサポート(非推奨化済み)を削除。

8.2 非推奨化

  • SQLite3Adapterretriesオプションを非推奨化。今後はtimeoutを使うこと。

8.3 主な変更

  • 新しいデータベースでdb:migrateを実行すると、マイグレーションの実行前にスキーマが読み込まれるように変更された。以後の呼び出しでは、保留中のマイグレーションが実行される。 (従来のようにマイグレーションを最初から実行する振る舞いが必要な場合は、db:migrate:resetを実行することで利用可能。これはデータベースをドロップして再作成した後にマイグレーションを実行する

9 Active Storage

変更点について詳しくはChangelogを参照してください。

9.1 削除されたもの

9.2 非推奨化

  • Active StorageでのAzureバックエンド利用を非推奨化。

9.3 主な変更

10 Active Model

変更点について詳しくはChangelogを参照してください。

10.1 削除されたもの

10.2 非推奨化

10.3 主な変更

11 Active Support

変更点について詳しくはChangelogを参照してください。

11.1 削除されたもの

  • 非推奨化されていたActiveSupport::ProxyObjectを削除。

  • attr_internal_naming_format@をプレフィックスとして設定するサポート(非推奨化済み)を削除。

  • ActiveSupport::Deprecation#warnに文字列の配列を渡すサポート(非推奨化済み)を削除。

11.2 非推奨化

  • Benchmark.msを非推奨化。

  • 加算やsinceTimeActiveSupport::TimeWithZoneを混ぜることを非推奨化。

11.3 主な変更

12 Active Job

変更点について詳しくはChangelogを参照してください。

12.1 削除されたもの

  • 非推奨化されていたconfig.active_job.use_big_decimal_serializerを削除。

12.2 非推奨化

enqueue_after_transaction_commitを非推奨化。

  • 組み込みのSuckerPunchアダプタを非推奨化。今後はsucker_punch gemに含まれるアダプタを使うこと。

12.3 主な変更

13 Action Text

変更点について詳しくはChangelogを参照してください。

13.1 削除されたもの

13.2 非推奨化

13.3 主な変更

14 Action Mailbox

変更点について詳しくはChangelogを参照してください。

14.1 削除されたもの

14.2 非推奨化

14.3 主な変更

15 Ruby on Railsガイド

変更点について詳しくはChangelogを参照してください。

15.1 主な変更

16 クレジット

Railsを頑丈かつ安定したフレームワークにするために多大な時間を費やしてくださった多くの開発者については、Railsコントリビューターの完全なリストを参照してください。これらの方々全員に深く敬意を表明いたします。

フィードバックについて

Railsガイドは GitHub の yasslab/railsguides.jp で管理・公開されております。本ガイドを読んで気になる文章や間違ったコードを見かけたら、気軽に Pull Request を出して頂けると嬉しいです。Pull Request の送り方については GitHub の README をご参照ください。

原著における間違いを見つけたら『Rails のドキュメントに貢献する』を参考にしながらぜひ Rails コミュニティに貢献してみてください 🛠💨✨

本ガイドの品質向上に向けて、皆さまのご協力が得られれば嬉しいです。

Railsガイド運営チーム (@RailsGuidesJP)

支援・協賛

Railsガイドは下記の協賛企業から継続的な支援を受けています。支援・協賛にご興味あれば協賛プランからお問い合わせいただけると嬉しいです。

  1. Star
  2. このエントリーをはてなブックマークに追加