k0kubun氏の記事に触発されてPryからirbに移行した所、何故かRSpecで binding.irb
した時にだけエラーが発生するようになった。
何が起こったのか
こんなエラーが発生するようになった。
Failure/Error: binding.irb LoadError: cannot load such file -- irb/color_printer Did you mean? irb/color_printer
ちなみに、このプロジェクトはRuby 3.0.1、Rails 6.1.3.1の組み合わせで動いている。そう言えば、件の記事でRuby 3系への対応が間に合っていない的なことが書いてあったと思い、GitHubを確認してみる。
なるほど、irb/color_printer
は3.0.1で取り込まれているっぽい。であれば動くはずなのだが…なぜ怒られるのか…しかもRSpecを走らせた時だけ…。
どうやって解決したか
怒られた時のスタックトレースを見れば一目瞭然なのだが、落ちているのはbootsnapの中だった。そして実際には存在するはずのファイルが読めていない。これはbootsnapのキャッシュが悪さしているに違いないということで、 tmp/cache
を丸ごと削除してみたところ、アッサリと動いてしまった…。おそらく、Ruby 3.0で動かしていた時のキャッシュが悪さしていたのではないかと思われる。
蛇足
キャッシュ関連は深追いしても実のある学びになることが少ないので、怪しいと思ったら取り敢えず削除してみるに限る。
bootsnapのキャッシュ問題に悩まされたのはこれが初めてだったので調べるのに時間が掛かってしまったけれども、どうやらRails界隈ではあるあるらしいので、今後はbootsnapで引っ掛かった時は取り敢えずキャッシュ削除と覚えておこう…。