Ruby

【解決策あり】ConflictErrorでMinitestが起動しなかった

Rubyのminitestを実行しようと思ったら、すごい数のエラーメッセージがでできて焦りました💦
エラーメッセージを読んでみるとconflictが起きていることがエラーの原因らしい。。

いろいろ調べたのでまとめておきます。

結論から言うと、BundlerでRailsを再インストールすることで解決しました!

conflictとは?

conflictは簡単にいうと競合や衝突という意味です。
プログラミングの場面では複数のライブラリが存在していて、それぞれのライブラリを同時に起動できない状態のことをconflictと表現します。

僕が遭遇したエラー

僕が遭遇したエラーは以下の通りです。
見にくくて申し訳ありませんが、右にスクロールしながら見てください。

Unable to activate railties-6.0.3.2, because activesupport-6.0.3.4 conflicts with activesupport (= 6.0.3.2) (Gem::ConflictError)

意訳すると、
『activesupport-6.0.3.3.4 が activesupport (= 6.0.3.2) と競合するため、railties-6.0.3.2 を有効化できない (Gem::ConflictError)』
ということになります。

activesupportの詳細はこちらを確認してもらったほうがいいと思います。↓
Railsガイド Active Support コア拡張機能

簡単にいうと、Ruby言語の拡張をになっているようです。

ConflictErrorの解決策

今回遭遇したエラーはRailsを再インストールすることで解決しました↓

bundle install rails

ただ他の場合でConflictErrorに遭遇した場合はGemファイルの依存関係を適切に保つことでエラーを解決できるようです。

参考記事
https://teratail.com/questions/231940