LoginSignup
3
3

More than 5 years have passed since last update.

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

Posted at

~ まえがき ~
既存システムの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系にあげないといけないので
そのあたりは注意するべきだろう。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3