Gem::ConflictErrorについて
※ 9/16日 追記
プロを目指す人のためのRuby入門の著者の伊藤 淳一さんから、この記事についてコメントをいただきました。
お忙しい中ご指導をしていただき、大変光栄です。
起動するときに、--no-pluginsオプションを入れると、コンフリクトエラーを回避できることを学びました。
実行したことは下記となります。
①削除したactivesupportをもう一度入れ直す。
$ gem install activesupport -v 6.1.4.1
②--no-pluginsオプションを入れた状態でMinitestを起動してみます。
$ ruby test/gate_test.rb --no-plugins
③無事に起動することができました。
ConflictErrorが起きた時、対象のソフトウェアを削除するのでは、今後そのソフトウェアが必要となったときに問題対処ができなくなってしまいます。今回得た知識を今後の学習に活かしたいと思います。
改めてお礼申し上げます。
【書いた理由】
チェリー本に書かれているMinitestが突然起動しなくなってしまいました。
調べてみたところエラー解決できたため、まとめてみます。
ちなみに、プログラミング歴1ヶ月の超初心者なのでご容赦ください
①まずは原因解明
エラー文を読んでみます。
/Users/takaya/.rbenv/versions/3.0.1/lib/ruby/3.0.0/rubygems/specification.rb:2247:in `raise_if_conflicts': Unable to activate railties-6.0.5.1, because activesupport-6.1.4.1 conflicts with activesupport (= 6.0.5.1) (Gem::ConflictError)
「Gem::ConflictError」と書いてあります。
よく読んでみると「activesupport-6.1.4.1」がコンフリクトしているようです。
ググってみたところアンインストールをした方が良さそうです。
②activesupportをアンインストールしよう
下のコードを入れると対象のバージョンをアンインストールできます。
$ gem uninstall activesupport -v 6.1.4.1
③もう一度動作確認
minitestを起動してみましょう。
Run options: --seed 7249
# Running:
.
Finished in 0.002668s, 374.8126 runs/s, 374.8126 assertions/s.
1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
問題なさそうです。
終わりに
今回の原因は、先日別の作業をした時にgemでいろいろインストールをしたことでしょうか。
思い当たる節はそれくらいです。
今後も起こり得そうなエラーなので、冷静に対処したいところです。