Home Software Libraries Ruby rails rails 7.2からrails 8.0への移行(アップデート、アップグレード)で必要な作業 @wakairo 22 Dec, 2024 07:47 +00:00 Rails 8.0におけるpublic_file_server.headersの設定の変更 rails newで生成されるconfig/environments/test.rbと同development.rbにおいて、 このプルリクエストのマージによって、 config.public_file_server.headersのキーが以下のように小文字になりました。 - config.public_file_server.headers = { "Cache-Control" => "public, max-age=#{2.days.to_i}" } + config.public_file_server.headers = { "cache-control" => "public, max-age=#{2.days.to_i}" } 変更された理由はRack 3への対応のためですので、既存アプリでも設定を変更するのが良さそうです。
Home Software Libraries Ruby rails rails 7.2からrails 8.0への移行(アップデート、アップグレード)で必要な作業 @wakairo 22 Dec, 2024 07:40 +00:00 Rails 8.0におけるdeprecation関連の設定の削除 rails newで生成されるconfig/environments/test.rbと同development.rbにおいて、 7.2以前は以下の設定用コードが存在していましたが、 このプルリクエストのマージによって削除されました。 # 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 = [] 削除された理由は、当該プルリクエストによると、アプリが新規生成された直後は非推奨の問題と無縁であるということからのようです。 ですので、非推奨の問題が出てくる可能性のある既存アプリにおいては適切な設定をしたままにしておくのが良さそうです。
Home Software Libraries Ruby rails rails 7.2からrails 8.0への移行(アップデート、アップグレード)で必要な作業 @wakairo 22 Dec, 2024 06:32 +00:00 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を追加すると良さそうです。
Home Software Libraries Ruby rails rails 7.2からrails 8.0への移行(アップデート、アップグレード)で必要な作業 @wakairo 22 Dec, 2024 03:44 +00:00 Rails 8.0への移行におけるActive Storageのmigration bin/rails app:updateコマンドを実行すると以下の3つのファイルがdb/migrate/に作成されることがありますが、 Active Storageをまだ使用したことがないアプリケーションでは、 これら3つのファイルは単純に削除してしまっても良いはずです。 xxx_add_service_name_to_active_storage_blobs.active_storage.rb xxx_create_active_storage_variant_records.active_storage.rb xxx_remove_not_null_on_active_storage_blobs_checksum.active_storage.rb 詳しくは、「Rails 7.1への移行におけるActive Storageのmigration」のコメントをご覧ください。
Home Software Libraries Ruby rails rails 7.2からrails 8.0への移行(アップデート、アップグレード)で必要な作業 @wakairo 20 Dec, 2024 12:38 +00:00 不要であればアイコン画像の削除 bin/rails app:updateコマンドを実行すると以下の2つのアイコン画像ファイルがpublic/に作成されますが、 これら2つのファイルは、rails newで生成される新規railsアプリ用のファイルであるため、既存アプリでは単純に削除してしまい、 従来通りのアイコン画像とアイコン設定(faviconやapple-touch-icon)を用いれば大丈夫です。 (もちろん、既存アプリにおいてアイコン設定が適切に行われている場合の話です。) icon.png icon.svg より詳細な情報はrails 7.2への移行におけるアイコン画像のコメントをご覧ください。
Home Software Libraries Ruby rails rails 7.2からrails 8.0への移行(アップデート、アップグレード)で必要な作業 @wakairo 20 Dec, 2024 12:32 +00:00 基本的にはRailsガイドの手順に従えば良いと思います。 ガイドの手順にもありますが、ぜひbin/rails app:updateコマンドを活用しましょう。 rails 8.0への移行で対応が必要そうな個別の作業について、以下のコメントでそれぞれ取り上げますので、ご参考になれば幸いです。
Home Software Libraries Ruby rails 既存のRailsアプリへのBrakemanの導入 @wakairo 20 Dec, 2024 05:08 +00:00 bundle binstubs brakemanを用いるやり方に更新しました。
Home Software Libraries Ruby rails rails 7.2で追加されたGitHubワークフローの設定ファイルci.ymlの内容について @wakairo 20 Dec, 2024 02:59 +00:00 rails 7.2では、新規アプリに対してデフォルトでGitHubワークフローの設定ファイルであるci.ymlが生成されるようになりました。そこで、このci.ymlの内容について簡単に解説します。 なお、ci.ymlの最新のテンプレートはこちらでご覧になれます。 scan_ruby bin/brakemanコマンドを実行するジョブです。 Railsの一般的なセキュリティ脆弱性がないかどうかチェックします。 scan_js bin/importmap auditコマンドを実行するジョブです。 利用しているJavaScriptパッケージにセキュリティ上の脆弱性がないかどうかチェックします。 lint bin/rubocopコマンドを実行するジョブです。 Rubyの静的コード解析を行い設定されているルールに準拠しているかどうかチェックします。 test bin/rails testコマンドを実行するジョブです。なお、skip_system_testオプションが無効であれば、システムテストも実行します。
Home Software Libraries Ruby rails 既存のRailsアプリへのDev Containerの導入 @wakairo 19 Dec, 2024 12:08 +00:00 Rails 7.2においてDev Container設定を生成する機能が追加されました。 例えば既存アプリでは、以下のコマンドで既存アプリ用のDev Container設定を生成できるようになりました。 rails devcontainer 生成した設定は、Visual Studio Codeで利用でき、Dev Containerを利用した既存アプリの開発が可能となります。 必要となるソフトウェアのインストール等、Dev Containerでの開発を開始するための手順についてはDev Containerでの開発ガイドが参考になります。 なお、Visual Studio Code以外のエディタでもDev Containerで開発できるようにするべくDev Container CLIというツールの開発が進んでいますが、2024年12月現在では、ポートフォワーディングに対応していないなど、今のところはまだまだ開発途中のツールであり、実開発に投入するにはまだ早い段階である印象です。
Home Software Libraries JavaScript Dev Container CLI Dev Container CLIはポートフォワーディングをサポートしていない @wakairo 19 Dec, 2024 11:48 +00:00 Dev Container CLIはポートフォワーディングをサポートしていないので、Dev Containerの中で動かしたWebサーバへDev Containerの外で動いているブラウザからアクセスするようなことはDev Container CLI単体では出来ないそうです。ちなみに、ポートフォワーディングを可能にする手法やツールはいくつか提案されているようです。
rails 7.2からrails 8.0への移行(アップデート、アップグレード)で必要な作業
Rails 8.0におけるpublic_file_server.headersの設定の変更
rails newで生成されるconfig/environments/test.rbと同development.rbにおいて、 このプルリクエストのマージによって、config.public_file_server.headersのキーが以下のように小文字になりました。変更された理由はRack 3への対応のためですので、既存アプリでも設定を変更するのが良さそうです。
rails 7.2からrails 8.0への移行(アップデート、アップグレード)で必要な作業
Rails 8.0におけるdeprecation関連の設定の削除
rails newで生成されるconfig/environments/test.rbと同development.rbにおいて、 7.2以前は以下の設定用コードが存在していましたが、 このプルリクエストのマージによって削除されました。削除された理由は、当該プルリクエストによると、アプリが新規生成された直後は非推奨の問題と無縁であるということからのようです。 ですので、非推奨の問題が出てくる可能性のある既存アプリにおいては適切な設定をしたままにしておくのが良さそうです。
rails 7.2からrails 8.0への移行(アップデート、アップグレード)で必要な作業
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 7.2からrails 8.0への移行(アップデート、アップグレード)で必要な作業
Rails 8.0への移行におけるActive Storageのmigration
bin/rails app:updateコマンドを実行すると以下の3つのファイルがdb/migrate/に作成されることがありますが、Active Storageをまだ使用したことがないアプリケーションでは、 これら3つのファイルは単純に削除してしまっても良いはずです。
詳しくは、「Rails 7.1への移行におけるActive Storageのmigration」のコメントをご覧ください。
rails 7.2からrails 8.0への移行(アップデート、アップグレード)で必要な作業
不要であればアイコン画像の削除
bin/rails app:updateコマンドを実行すると以下の2つのアイコン画像ファイルがpublic/に作成されますが、これら2つのファイルは、
rails newで生成される新規railsアプリ用のファイルであるため、既存アプリでは単純に削除してしまい、 従来通りのアイコン画像とアイコン設定(faviconやapple-touch-icon)を用いれば大丈夫です。 (もちろん、既存アプリにおいてアイコン設定が適切に行われている場合の話です。)より詳細な情報はrails 7.2への移行におけるアイコン画像のコメントをご覧ください。
rails 7.2からrails 8.0への移行(アップデート、アップグレード)で必要な作業
基本的にはRailsガイドの手順に従えば良いと思います。
ガイドの手順にもありますが、ぜひ
bin/rails app:updateコマンドを活用しましょう。rails 8.0への移行で対応が必要そうな個別の作業について、以下のコメントでそれぞれ取り上げますので、ご参考になれば幸いです。
既存のRailsアプリへのBrakemanの導入
bundle binstubs brakemanを用いるやり方に更新しました。rails 7.2で追加されたGitHubワークフローの設定ファイルci.ymlの内容について
rails 7.2では、新規アプリに対してデフォルトでGitHubワークフローの設定ファイルであるci.ymlが生成されるようになりました。そこで、このci.ymlの内容について簡単に解説します。
なお、ci.ymlの最新のテンプレートはこちらでご覧になれます。
scan_ruby
bin/brakemanコマンドを実行するジョブです。 Railsの一般的なセキュリティ脆弱性がないかどうかチェックします。scan_js
bin/importmap auditコマンドを実行するジョブです。 利用しているJavaScriptパッケージにセキュリティ上の脆弱性がないかどうかチェックします。lint
bin/rubocopコマンドを実行するジョブです。 Rubyの静的コード解析を行い設定されているルールに準拠しているかどうかチェックします。test
bin/rails testコマンドを実行するジョブです。なお、skip_system_testオプションが無効であれば、システムテストも実行します。既存のRailsアプリへのDev Containerの導入
Rails 7.2においてDev Container設定を生成する機能が追加されました。 例えば既存アプリでは、以下のコマンドで既存アプリ用のDev Container設定を生成できるようになりました。
生成した設定は、Visual Studio Codeで利用でき、Dev Containerを利用した既存アプリの開発が可能となります。 必要となるソフトウェアのインストール等、Dev Containerでの開発を開始するための手順についてはDev Containerでの開発ガイドが参考になります。
なお、Visual Studio Code以外のエディタでもDev Containerで開発できるようにするべくDev Container CLIというツールの開発が進んでいますが、2024年12月現在では、ポートフォワーディングに対応していないなど、今のところはまだまだ開発途中のツールであり、実開発に投入するにはまだ早い段階である印象です。
Dev Container CLIはポートフォワーディングをサポートしていない
Dev Container CLIはポートフォワーディングをサポートしていないので、Dev Containerの中で動かしたWebサーバへDev Containerの外で動いているブラウザからアクセスするようなことはDev Container CLI単体では出来ないそうです。ちなみに、ポートフォワーディングを可能にする手法やツールはいくつか提案されているようです。