テストを書いていて謎のエラー
エラー内容は
1) User 認証機能 ユーザー登録したときに ホームに遷移すること
Failure/Error: raise ActionController::RoutingError, "No route matches [#{env['REQUEST_METHOD']}] #{env['PATH_INFO'].inspect}"
ActionController::RoutingError:
No route matches [GET] "/%E5%90%8D%E7%A7%B0%E6%9C%AA%E8%A8%AD%E5%AE%9A%E3%81%AE%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3.png"
こんな感じ
UTF-8
でデコードして要約すると
名称未設定のデザイン.png
っていうルーティングがありません
っていう意味。謎
開発環境
ruby 2.6.5
Ruby on Rails 5.2.5
前提
rspec でテストを書いている
本題
おそらく前回の日記に書いたんだけど
img
タグがうまくいってないと謎のリクエストが流れるから
img
タグに不備があるんだろうなって思った。
しかし一通り見直しても不備はない。
そもそも 名称未設定のデザイン.png
なんて名前の画像はない
困った
head
タグの中の
= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload'
っていうタグをコメントアウトするとエラーが解消されることを発見する。
やはりおかしいのは css
そこで上記のタグのコメントアウトを解除して
css
を全てコメントアウトしたけれどもエラーは解消されなかった。
ただここで css
を全てコメントアウトしているのにきちんと css があたっていることに気づく
つまり、css
が反映されていないことがわかった。
rails assets:precompile
上記のコードでプリコンパイルしてみる
すると css
が反映された。
要するに rspec
で css
の変化を反映するにはプリコンパイルが必要
今回のエラーは前回 heroku に上げた時点のプリコンパイルの内容と
現在の css
の内容が違うから起こっていた。
前回の css
でも問題ないなら問題にならないけど
今回のケースでは背景の画像を前回と変えていて、
img のパスでは現実には画像がないからこのエラーが起こった
しんどかった