# Raise exceptions for disallowed deprecations.config.active_support.disallowed_deprecation=:raise# Tell Active Support which deprecation messages to disallow.config.active_support.disallowed_deprecation_warnings=[]
- # Show full error reports and disable caching.
+ # Show full error reports.
config.consider_all_requests_local = true
- config.action_controller.perform_caching = false
config.cache_store = :null_store
- # Disable caching for Action Mailer templates even if Action Controller
- # caching is enabled.
- config.action_mailer.perform_caching = false
+ # Cache assets for far-future expiry since they are all digest stamped.
+ config.public_file_server.headers = { "cache-control" => "public, max-age=#{1.year.to_i}" }
# Assume all access to the app is happening through a SSL-terminating reverse proxy.
- # Can be used together with config.force_ssl for Strict-Transport-Security and secure cookies.
- # config.assume_ssl = true
+ config.assume_ssl = true
基本的にはRailsガイドの手順に従えば良いと思います。
ガイドの手順にもありますが、ぜひ
bin/rails app:update
コマンドを活用しましょう。rails 8.0への移行で対応が必要そうな個別の作業について、以下のコメントでそれぞれ取り上げますので、ご参考になれば幸いです。
不要であればアイコン画像の削除
bin/rails app:update
コマンドを実行すると以下の2つのアイコン画像ファイルがpublic/
に作成されますが、これら2つのファイルは、
rails new
で生成される新規railsアプリ用のファイルであるため、既存アプリでは単純に削除してしまい、 従来通りのアイコン画像とアイコン設定(faviconやapple-touch-icon)を用いれば大丈夫です。 (もちろん、既存アプリにおいてアイコン設定が適切に行われている場合の話です。)より詳細な情報はrails 7.2への移行におけるアイコン画像のコメントをご覧ください。
Rails 8.0への移行におけるActive Storageのmigration
bin/rails app:update
コマンドを実行すると以下の3つのファイルがdb/migrate/
に作成されることがありますが、Active Storageをまだ使用したことがないアプリケーションでは、 これら3つのファイルは単純に削除してしまっても良いはずです。
詳しくは、「Rails 7.1への移行におけるActive Storageのmigration」のコメントをご覧ください。
Rails 8.0ではfilter_parametersに:cvvと:cvcが追加された
rails new
で生成されるconfig/initializers/filter_parameter_logging.rbにおいて、 Rails 8.0でconfig.filter_parametersに:cvv
と:cvc
が追加されました。 この追加に関するプルリクエストはこちらです。セキュリティの観点からは、確かにクレジットカードのCVCとCVVをフィルタすることは適切であるように思いますので、既存アプリにおいても:cvvと:cvcを追加すると良さそうです。
Rails 8.0におけるdeprecation関連の設定の削除
rails new
で生成されるconfig/environments/test.rbと同development.rbにおいて、 7.2以前は以下の設定用コードが存在していましたが、 このプルリクエストのマージによって削除されました。削除された理由は、当該プルリクエストによると、アプリが新規生成された直後は非推奨の問題と無縁であるということからのようです。 ですので、非推奨の問題が出てくる可能性のある既存アプリにおいては適切な設定をしたままにしておくのが良さそうです。
Rails 8.0におけるpublic_file_server.headersの設定の変更
rails new
で生成されるconfig/environments/test.rbと同development.rbにおいて、 このプルリクエストのマージによって、config.public_file_server.headers
のキーが以下のように小文字になりました。変更された理由はRack 3への対応のためですので、既存アプリでも設定を変更するのが良さそうです。
Rails 8.0におけるquery_log_tags_enabled
config.active_record.query_log_tags_enabled
は、SQLクエリのログに実行時情報のコメントを付加する機能を有効にするかどうかの設定です。rails new
で生成されるconfig/environments/development.rbにおいて、 8.0からは以下のようにこの設定が有効になるコードになりました(この変更のPR)。 ちなみに、default値は7.2から変わらずfalseですので、 development.rb内の当該設定を意図的に変更しなければ、既存アプリの挙動が勝手に変わることはありません。確かにdevelopment環境において便利そうな機能ですので、8.0へのアップデートを機に、有効にしても良いかもしれません。
Rails 8.0におけるassets.quiet
config.assets.quiet
は、アセット関連リクエストのログ出力を無効にするかどうかの設定です。後述のように、Rails 8.0.0でtrueにする以下の設定が削除されましたが、復活させるPRが出ていますので、既存アプリで削除するかには慎重な判断が必要かもしれません。rails new
で生成されるconfig/environments/development.rbにおいて、 8.0.0と8.0.1ではこの設定が削除されています(この変更のPR)。 しかし、この設定を削除するとターミナル出力がとっちらかるので設定を復活させるというPRがマージ済みですので、今後のバージョンでは設定が復活します。Rails 8.0におけるaction_controller.perform_cachingとaction_mailer.perform_caching
config.action_controller.perform_caching
とconfig.action_mailer.perform_caching
は、両方ともキャッシュ機能を有効にするかどうかの設定です。rails new
で生成されるconfig/environments/test.rbにおいて、 8.0からは以下のようにこれらの設定を無効にするコードが削除されました(この変更のPRとこの変更のCommit)。公式として8.0からはテスト環境ではキャッシュが効いた状態を標準とするということだと思いますので、既存アプリでも同じ設定変更、つまり、設定の削除をしても良いかもしれません。
Rails 8.0におけるassets.compile
config.assets.compile
は、動的なSprocketsコンパイルを有効にするかどうかの設定です。rails new
で生成されるconfig/environments/production.rbにおいて、 8.0からは以下のようにこの設定が削除されているのですが(この変更のPRとこの変更のCommit)、 これは8.0からrails new
で生成されるアプリのアセットパイプラインのデフォルトがPropshaftになったことに起因するものです。ですので既存アプリは、Propshaftへ移行する前はこの設定は削除しない方が良いと思われます。
Rails 8.0におけるpublic_file_server.headersとassume_ssl
rails new
で生成されるconfig/environments/production.rbにおいて、 8.0からは以下の設定2つが追加されているのですが(この変更のPRとこの変更のCommit)、 これは8.0からrails new
で生成されるアプリでKamal 2対応が行われていることに起因するものです。ですので既存アプリでは、Kamal 2対応をしないのであればこれらの設定の追加はしなくても良いと思われます。