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