0
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Rails6からRails7へのアップデート手順(Rails6.1.4.7→Rails7.0.3)

Last updated at Posted at 2022-07-26

Rails6からRails7へのアップデートメモ

今更ですが、rails4からrails7までアップデートする必要があったため
Rails4→Rails5
Rails5→Rails6
Rails6→Rails7
のアップデートで手順をまとめていきます。

ここではRails6→Rails7の手順を書いていきます。

事前準備

testが通るようにしておく

testを通るようにしておくと、アップデート後に、どこがエラーになるのか確認しやすいです。
事前にtestが全て通るようにしておきましょう。

Ruby Version

今回はRuby 3.1.2 で対応してます

Railsをアップデート

gemfileの修正

gemのrailsのバージョンを変更する

変更前
gem 'rails', '6.1.4.7'

変更前
gem 'rails', '7.0.3'

railsのupdate

下記コマンドを実行してrailsをupdateします

bundle update rails

設定ファイル更新

以下のコマンドを実行して、Railsの設定ファイル等を更新します。

bundle exec rails app:update

問題なければ上書きして良いでが、
必ず差分を見ながら更新していきましょう。

bundle update

bundle updateを実行して
gemファイルの依存関係などでエラーがある場合は修正しておきます。

bundle update

db:migrate

# migrationファイルができるのでmigrate実行
bundle exec rails db:migrate

エラーを修正

直でSQLを書いている箇所の、limit offsetの値もサニタイズされるようになり、
エラーになってしまったので修正しました

修正前
sql_txt += " ORDER BY ID DESC LIMIT :limit OFFSET :offset"
cond[:offset] = offest
cond[:limit] = limit
修正後
sql_txt += " ORDER BY ID DESC LIMIT #{offset.to_i} OFFSET #{limit.to_i}"

sprockets4対応

manifest.jsに設定を移行しました

/config/environments/以下各ファイルの設定をmanifest.jsに移行
config.assets.precompile += %w(debug/*.js debug/*.css event/*.js event/*.css)
config.assets.precompile += %w(admin/*.js admin/*.css)

/app/assets/config/manifest.js

//= link_tree ../images .gif
//= link_tree ../images .png
//= link_tree ../images .jpg
//= link application.js
//= link application.css
//= link_tree ../javascripts/debug .js
//= link_tree ../stylesheets/debug .css
//= link_tree ../javascripts/event .js
//= link_tree ../stylesheets/event .css
//= link_tree ../javascripts/admin .js
//= link_tree ../stylesheets/admin .css

ES6に対応

precompileでエラーが起きてしまい、調査したところ
actiontextで使用されるjs(ES6)がプリコンパイル対象に自動で追加されていて
アプリがES6に対応してなかったため、これを機にES6に対応しました。

gemfile変更

修正前
gem 'uglifier', '2.7.1'
修正後
gem 'uglifier', '4.2.0'

/config/environments/以下各ファイル

gem 'uglifier', '4.2.0'

修正前
config.assets.js_compressor = :uglifier
修正後
config.assets.js_compressor = Uglifier.new(:harmony => true)

まとめ

Rails6からRails7へのアップデート手順をまとめていきました。
6にアップデートするときに、7へのアップデートを考慮して対応しておいたので
大幅な修正は必要ありませんでした。

参考

Rails アップグレードガイド

0
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?