Help us understand the problem. What is going on with this article?

Ruby2.6.xとRails4.2.xで発生するRSpecのアラートについて

~ まえがき ~
既存システムのRubyバージョンが間もなくサポート切れとなる(2019/3中旬時点)
Ruby2.3系統で動いているので、2.6にバージョンを上げて挙動確認したときの話です。

Rubyを2.6.2、Railsを4.2.11.1にあげてRSpecを走らせてみた

するとすべてのテストでFailure/Errorが発生。
ログを確認すると次のエラーが発生していた。

ThreadError:
  already initialized
# ./spec/contorollers/hogehogehoge_spec.rb:line_no:in `block (4 lebels) in <top (required)>`

すべて同じエラーでコケているのでとりあえずエラーコードをググる。
すると一つのIssueに引っかかった。

Tests cause ThreadError: already initialized with Ruby 2.6.0

このIssueのログも全く同じものだったので
コメントの内容をチェック。

どうもモンキーパッチを修正すればエラーは発生しなくなるっぽい
can be fixed by this monkeypatch

とりあえずこのコードを参照してspec/support/patch.rbのファイルを作成してテストを再度回してみる。

それでも別のエラーが発生した。

ThreadErrorはなくなったが同じ件数で今度はRuntimeEroorが発生

これのエラー対処もあるかと思って、さっきのIssueを確認するも
対処法な載っておらず、とりあえずRails4.2系を使わずに
さっさとRails5.xにアップグレードしてくださいねということらしい。

結論

Ruby2.6系とRails4.2系は相性が良くないらしいので、
Rails4.2.x系をまだ使いたいという場合はRuby2.5.x系を使わないといけない。

逆にRuby2.6.x系を使いたい!という場合はRails5.x系にあげないといけないので
そのあたりは注意するべきだろう。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away