今回はDocker環境下でのRuby・Railsアップグレード手順についてまとめたので解説したいと思います。Railsアプリケーションを運用している場合、アップグレード対応は必ず必要になってくる作業なので、事前に一度目を通しておくことをおすすめします。CircleCIを使用している場合、CircleCI側のアップグレード対応も必要になりますが、それらの説明はここでは省略しています。カバレッジの補強アップグレード作業を始める前にRSpecやMinitestのカバレッジを補強し、テストが全てパスすることを確認します。(カバレッジはsimplecovやcodecovを使用して計測しましょう)カバレッジがどのくらい必要か、どこまでの範囲をテストで網羅するかについては、各プロジェクト判断になるので事前に確認しておきます。【RSpec導入】RubyのテスティングフレームワークRSpecについて初心者向けにまとめてみたプログラミングにおけるテストについて、RSpecと呼ばれるテスト独自の言語を用いながら解説しています。作成したwebサービスが正しく動くかどうかを試験することで、事前にエラーになり得る箇所を発見できたり、要件漏れを防ぐことができます。リリースノートの確認アップグレード予定のバージョンのリリースノートをチェックし、変更点を確認しておきます。アップグレードの注意点やアップグレード後に修正するべき箇所などが載っているので最初に必ず確認するようにしましょう。Ruby3.1.0リリースノートRuby3.1.0Rails7.0.3.1リリースノートRails7.0.3.12022/09/01現在の最新バージョンのリリースノートを掲載しています。開発ブランチの作成アップグレード作業を始める前に開発用ブランチを作成し、ミスがあった場合でもアップグレード前の状態に戻すことができるようにしておきます。最新のRubyやRailsに対応していないGemが混じっている可能性があるため、RubyとRailsのアップグレードを行う前に最新版でないGemを確認します。outdatedの結果を見やすく整形してくれます。各プロジェクトの判断で導入してください。development・testグループのGemアップデートRubyとRailsのバージョンを上げる前にGemのバージョンアップデートを行います。その中でもアプリケーションへの影響が少ないと思われるdevelopmentとtestグループのGemアップデートを最初に行います。テスト実行developmentとtestグループのGemアップデートが完了したら、テスト(RSpec)を実行しエラーが出ないことを確認します。Gemの一括アップデートRailsのバージョンは固定し、その他のGemを一括でアップデートします。update後方互換性が失われるような変更履歴が含まれる場合、Gemの一括アップデートを行うとエラーになってしまう可能性があります。トラブルが起きそうなGemがある場合、それらのGemは1つずつアップデートを実行するようにしましょう。テスト実行(手動テストも)Gemアップデートが完了したら、再度テストを実行しエラーが出ないことを確認します。rspec今回はRSpecでのテストだけでなく、実際に画面を操作する手動テストも実行します。RSpec等のテストコードで網羅できていない箇所を重点的にテストし、アプリケーションの挙動に問題ないことを確認してください。アプリケーションのメイン機能やメール配信、SMS配信といった注意が必要な機能を中心に手動テストを行いましょう。Rubyのアップグレード続いてRubyのアップグレードを行います。Dockerfile、.ruby-version、Gemfileのバージョンを最新バージョンに書き換えます。installを実行します。installRubyのバージョンを確認し、変更後のバージョンが表示されれば完了です。3.1.4現在使用しているRubyバージョンと最新バージョンが大きくかけ離れている場合は段階的にアップグレードすることをおすすめします。3.1.0段階アップグレードは必要ですが、Rubyは後方互換性を重視しているため、アップグレード後にトラブルは起きにくいと言われています。テスト実行(手動テストも)再度RSpecでのテストと手動テストを実行しエラーが出ないことを確認します。RailsのアップグレードここからRailsのアップグレードを行いますが、現行のバージョンと最新バージョンとの差が大きい場合は段階的にバージョンを上げていきます。「パッチバージョンのアップグレード→マイナーバージョンのアップグレード→メジャーバージョンのアップグレード」のように段階的にバージョンを上げることで、アップグレードによるエラーを解消しやすくなります。Rails6.0.5→Rails6.0.6→Rails6.1.7→Rails7.0.4のような感じで段階的にアップグレードを行なっていきます。updateを実行します。app:updateを実行します。テスト実行(手動テストも)再度RSpecによるテストと手動テストを実行します。レビュー依頼ここまででRubyとRailsのアップグレードが完了です。最後に設定や挙動に問題がないかレビューしてもらいましょう、お疲れ様でした。今回はDocker環境下でのRuby・Railsアップグレード手順についてまとめました。バグを防ぐ、アップグレード対応の負荷を減らすという観点から、日頃からアップグレードを心がけるようにしておきましょう。yoshi19941117TechTechMedia【Rails】モデル名を直接指定できるclass_nameオプションにつ...【MySQL】RailsアプリケーションをDocker環境下で動かすまで...Railsエンジニアちばよしはる銀座にあるヘルステック企業のRailsエンジニア。初心者から中級者向けに記事を更新しています。お酒とカレーと競馬が好き。TechTechMedia。