rails8のupdate手順
rails8.0がリリースされました。
既存のrailsサービスをアップデートしたので、その手順を残しておきます。
環境
- docker
- ruby3.3.4
- rails7.2.1 APIモード
- rspecカバレッジ90%
前提
rails8にする前にやっておくべきことは以下です。
- rails7.2にしておく
- DEPRECATION WARNINGを全部解消しておく
- テストを充実させておく
1. railsを7.2.1から7.2.2にupdate
まずはrailsを8.0前の最新にします。
私の場合は
rails7.2.1から7.2.2にupdateしました。
bundle update --conservative rails
2. テスト
rspecを実行します。
bundle exec rspec spec --backtrace
全てのテストが通って、DEPRECATION WARNINGも発生しなければOKです。
3. Gemfile修正
Gemfileのrailsを8.0.0に書き換えます。
- gem "rails", "~> 7.2.1"
+ gem "rails", "~> 8.0.0"
4. railsを8.0.0にupdate
bundle update --conservative rails
依存gemが8.0.0に未対応の場合は、updateできない場合もあります。
5. rails app update
設定ファイルを最新にします。
bundle exec rails app:update
コマンド実行前にgitで保存しておいて、全部Yを選択して全てのファイルを更新します。
その後、gitのdiffで差分を確認しながらファイルを修正していくと良いでしょう。
私の環境ではほとんど修正点はありませんでした。
今回変更したのは
:passw, :email, :secret, :token, :_key, :crypt, :salt, :certificate, :otp, :ssn, :cvv, :cvc
上記は:cvv, :cvcを追加しました。
# Run the Solid Queue supervisor inside of Puma for single-server deployments
plugin :solid_queue if ENV["SOLID_QUEUE_IN_PUMA"]
こちらはsolid_queueを追加しました。
6. 追加migrateファイル
使うかわからないので、ひとまずファイル名の拡張子をbkにして残しました。
7. application.rb
最後はapplication.rbの
config.load_defaults 7.2を8.0に変更します。
確認
8.0になっていることを確認します。
bundle exec rails about
About your application's environment
Rails version 8.0.0
Ruby version ruby 3.3.4 (2024-07-09 revision be1089c8ec) +YJIT [x86_64-linux]
RubyGems version 3.5.11
Rack version 3.1.7
rspecを実行します。
bundle exec rspec spec --backtrace
問題がなければ、サーバーを起動していつもどおりであることを確認して終了です。
まとめ
rails7.2からであれば、rails8のupdateで問題になる点はありませんでした。
railsのupdateをうまくやるコツは
- メンテナンスはこまめにやっておく
- 依存gemは最小限にする
であることは今後も変わらないでしょう。
railsの生産性の高さを享受するには、
こまめなメンテナンス
が欠かせないことが今回のupdateでより確信しました。
今後の学習
rails8では色々新規の機能が入っていたので、今後以下の機能の実用性を調査しようと思います。
- Thruster
- Solid Queue
- Solid Cache
- Kamal 2
rails8.1でもActive Record SearchやAction Notifierなどの機能が搭載されるので、今後はしばらく新しくなったrailsの学習が必要になりそうです。
Discussion