@kyanny's blog

My thoughts, my life. Views/opinions are my own.

Net::HTTP#set_debug_output

Net::HTTP で通信してる内容をのぞくには set_debug_output に io を渡す。ヘッダもボディも全部出るので外部 API の呼び出しをするコードのデバッグとかに便利。

http = Net::HTTP.new('example.com', 80)
http.set_debug_output($stderr)
http.get('/')

あんまし見やすくはない。 StringIO とか使ってうまく改行を整形した状態で出力できないかなと思ったけどうまくいかなかった。

ぐぐってもあまり出てこないけど undocumented というわけではないみたいだし知ってる人は知ってるみたい。

net/http - 詳細なログを出力させる - 技術メモ帳
Rubyのnet/http でHTTPリクエスト/レスポンスをdumpする方法 - ( ꒪⌓꒪) ゆるよろ日記
Class: Net::HTTP (Ruby 2.6.1)

WARNING This method causes serious security hole. Never use this method in production code. とかこわいことが書いてあるけど要するに POST データとかまで生で出力しちゃうから場合によってはパスワード見えちゃうとか起こりえるよ、というくらいの意味なんだと思う。

ruby - Why is Net::HTTP's set_debug_output dangerous if used in production? - Stack Overflow