0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

rspec に css を反映するにはプリコンパイルが必要

Posted at

テストを書いていて謎のエラー
エラー内容は

  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 が反映された。

要するに rspeccss の変化を反映するにはプリコンパイルが必要

今回のエラーは前回 heroku に上げた時点のプリコンパイルの内容と
現在の css の内容が違うから起こっていた。

前回の css でも問題ないなら問題にならないけど
今回のケースでは背景の画像を前回と変えていて、
img のパスでは現実には画像がないからこのエラーが起こった

しんどかった

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?