TL;DR
xray-rails
gemを使っている方がRails6にアップグレードするときは要注意。
事の流れ
発端
プロジェクトをRails6に上げたところ、なぜかimage_tag
が動作しなくなりました。具体的には、app/assets/images/exist.svg
みたいなファイルがあるのに、image_tag 'exist.svg'
がエラーを吐くようになりました。
調査
試しに新規にRails6アプリケーションを作成し、同じファイルをコピーしてimage_tag
を使用したところ問題なく動作しました。この時点で該当アプリケーションと新規アプリケーションの差分が原因(ファイルや記法の問題ではない)ということはわかったものの、設定が問題だと思いこんでいたためどこが真の原因かを突き止めることができませんでした。
ruby-jp
自力での調査を続けてもよかったのですが、正直疲れていた私はオンラインで質問することにしました。
幸い、ruby-jp
というSlackコミュニティがあり、そこにはrails
チャンネルがあるので私はそちらに質問を投下しました。
undefined method 'pathname' for #<#:0x00007f84088a6018>というエラーが出て困っています。
既存のRails 5.2のアプリをRails 6に上げたら出るようになりました。
image_tagの箇所で出ており、 app/assets/images/hoge.svgが存在するときに image_tag 'hoge.svgを呼ぶと上記エラーとなります。
アセットパイプラインがおかしいとは思うのですが、正常動作しているRails 6のアプリと比べても違いがわからずに困っています。
同じような経験のある方はいらっしゃいますでしょうか…
するとなんと8分後に回答が!
xray-rails入ってます?
はっとなりました。Gemfile
にxray-rails
のエントリがあることは知っていたため「あります」と回答するとURLが。
なるほど…
解決
xray-rails
をGemfile
から除外するとエラーは出なくなりました、めでたしめでたし。
(master
ブランチを使うという手もありましたが、もう使っていないということだったので除外する方法を採りました)
まとめ
というわけで、xray-rails
が原因であることがruby-jp
のおかげでわかりました、という話でした。回答してくださったbluerabbit
さんをはじめとした方々、ありがとうございました!