ユースケース
例えば、Rspecのrequest specを以下の様に書いていて、
spec/request/user_spec.rb
it do
get users_path
expect(response.code).to eq 200
end
実行したら500で返ってきてちょっと調べても
???ってなった場合のハックです。
$ rspec spec/request/user_spec.rb
Failure/Error: expect(response.code).to eq 200
expected: 200
got: "500"
(compared using ==)
手順
1. リクエストの後にbinding.pry
する
spec/request/user_spec.rb
it do
get users_path
+ bunding.pry
expect(response.code).to eq 200
end
2. response.body
を確認
pry
コンソールが起動したらresponse.body
を確認します。
以下の様にHTMLの文字列が返ってくると思います。
$ response.body
=> "<!DOCTYPE html>\n<html>\n<head>\n <title>NoMethodError at
3. response.body
をファイル出力
そのままコンソールで以下を実行してhtmlファイルを作成します。
$ File.write("tmp/debug.html", response.body)
$ exit # console抜けます
consoleを抜けて、ファイルが作成されているか確認します。
$ ls -la tmp/
debug.html
4. 作成したファイルをブラウザで表示
このHTMLファイルをブラウザで読み込むとrailsのエラーページが描画されるので多少わかりやすくなります。
$ open tmp/debug.html