Ruby

【解決策あり】RubyMineでminitestが実行できない!

RubyMineでminitestを実行しようとしたらエラーが出現してしまって困り果ててました泣

色々と調べていたら対応策が見つかったのでまとめておきます!

RubyMine

僕はRubyMineというIDEを使っています。
gitの操作のしやすさやコードジャンプ、デバッグが使いやすいなどメリットがたくさんあります。

有料ですが、もしRubyの学習をしている人にはおすすめです!
RubyMine:JetBrainsによるRuby on Rails IDE

RubyMineでminitestを実行するには?

RubyMineでminitestを実行するとどんなエラーが出るのか

具体的にどういうエラーが出るのかを以下に提示します。

今回は sample_test.rb というファイルを用意しました
コードは以下のものです。

単純に ruby sample_test.rb を実行すればテストは通ります。

しかしRubyMineでテストを実行するとうまくいきません💦

RubyMinenの機能でminitestをzじじkじっkじっこ実行実行
エラーが出る

具体的なエラーコード↓

該当箇所をデバッグしてみると下線部文が怪しい気がする。

【解決策】RubyMineでminitestを実行する方法

解決策はこちらの記事に書かれていました!

参考記事:Minitest fails with uninitialized constant Minitest::RubyMineMinitestParallelTestCaseManager::Set

s temporary workaround, open the rm_reporter_plugin.rb file from the stack trace and type require 'set' before the line 97

参考記事:Minitest fails with uninitialized constant Minitest::RubyMineMinitestParallelTestCaseManager::Set

rm_reporter_plugin.rbrequire 'set' を追加すれば解決するよ!ってことですね。

require ‘set’でなにが変わった?

‘require ‘set’`でminitestが実行されるようになった理由がわからなかったのでデバッグしてみました。

エラーが出ていた時と比べると以下のエラー文がなくなっていますね。
setを定義づけられたってことなのかな🤔?

‘set’ってどんなクラス?

これまで ‘set’ を使ったことがなかったのでリファレンスを調べてみました。
library set (Ruby 3.0.0 リファレンスマニュアル)

集合を表す Set クラスを提供します。
集合とは重複のないオブジェクトの集まりです。 Array の持つ演算機能と Hash の高速な検索機能を合わせ持ちます。
Set は内部記憶として Hash を使うため、集合要素の等価性は Object#eql? と Object#hash を用いて判断されます。したがって、集合の各要素には、これらのメソッドが適切に定義されている必要があります。
Set クラスでは、集合要素を取り出す際の順序は保証されません。

library set (Ruby 3.0.0 リファレンスマニュアル)

‘set’のことはわかったけど、今回とどういう関係なのかはわからない🤔?