(Rails) ダウングレードする7.0.3.1 -> 6.1.6.1

 Railsでダウングレードする。

状況

諸事情によりrailsのバージョンを7.0.3.1から6.1.6.1に変更する必要があった。(6.1.4を入れたかったが、6.1.4を指定しても7.0.3.1が入ってしまった。)

各アプリケーションに移動する。

cdコマンドで各アプリケーションに移動してください。

Railsのバージョンを確認する。

$rails -v #railsのversionを確認するコマンド。
rails 7.0.3.1

Rails,Railtiesをアンインストールする

$gem uninstall rails  #railsをuninstallするコマンド。
Successfully uninstalled rails-7.0.3.1
$gem uninstall railties #railtiesをuninstallするコマンド。
Successfully uninstalled railties-7.0.3.1
#----#
#この時にほかのralisのバージョンが入っていると、以下のようになる。
Select gem to uninstall:
 1. rails-6.1.4
 2. rails-6.1.6.1
 3. rails-7.0.3.1
 4. All versions
> 3 #4でもOK 
#uninstallするバージョンを選んでくださいということ。

Rails 6.1.6.1を入れなおす

gem install rails -v 6.1.6.1 ##railsをinstallするコマンド

Gemfileの更新

今の状態ではGemfileに7.0.3.1を入れるように記述があるのでそこを変更する。

Gemfile

gem 'rails', '~> 7.0.3', '>= 7.0.3.1' #変更前
gem 'rails', '~> 6.1.6', '>= 6.1.6.1' #変更後

bundleを更新する。

$bundle update #ここでエラーがでると思われる。
Bundler could not find compatible versions for gem "actionpack":
In snapshot (Gemfile.lock): actionpack (>= 7.0.3.1)
In Gemfile: rails (~> 6.1.4) was resolved to 6.1.4,
which depends on actionpack (= 6.1.4) importmap-rails was resolved to 1.1.5,
which depends on railties (>= 6.0.0) was resolved to 7.0.3.1,
which depends on actionpack (= 7.0.3.1) 
Running `bundle update` will rebuild your snapshot from scratch,
using only the gems in your Gemfile, which may resolve the conflict.

actionpackが7.0.3.1と6.1.4どちらの方で対応すればよいのかがわかっていない状態。なので、一つ一つ変えてあげる。

$bundle update --conservative actionpack #またエラーが出た。
Bundler could not find compatible versions for gem "activesupport":
.
.
.

同じような感じで今回はactivesupportなので追記する。

$bundle update --conservative actionpack activesupport #エラーがなくなるまで繰り返す

 bundle update ができたらバージョンを確認する。

$rails -v
rails 6.1.6.1

これで入ったので完了。

参考文献

bundle update --conservative で狙った gem だけをアップデートする - ユユユユユ

Rails バージョンアップ時の bundle update におけるバージョンコンフリクト解消方法について