Hatena::Groupsubtech

#生存戦略 、それは

-> 11 { 06 / 15 }

Ruby で HTTP の内容をトレースする

15:24 | はてなブックマーク - Ruby で HTTP の内容をトレースする - #生存戦略 、それは

外部ライブラリを使ってテストを書くときや、デバッグ時に今どんな http のリクエストが送られてるかを知りたいとき、webmock を使うと知ることができる。

webmock は本来 http の stub つくるライブラリなんだけど、 allow_net_connect! と after_request を利用すると、実際のリクエストは出しつつも、結果をトレースすることができる。

require 'rubygems'
require 'webmock'

WebMock.allow_net_connect!
WebMock.after_request do |request_signature, response|
  puts "= Request #{request_signature} was made ="
  puts response.status.join(' ')
  puts response.headers.map {|key, val| "#{key}: #{val}" }.join("\n")
  puts "\n" + response.body unless response.body.empty?
end

require 'open-uri'
open('http://example.com/').read

a2ikma2ikm2011/06/15 17:27ちょっと古めですけどNet::HTTPにロガーを仕込むnet-http-spyなんてのもありますよ
https://github.com/martinbtt/net-http-spy

secondlifesecondlife2011/06/15 19:02そんなライブラリがあったのですね、知りませんでした。
webmock のほうは、各種メジャーどころの http ライブラリのアダプターもあるので、Net::Http に限らず使えたりしますね。
https://github.com/bblimke/webmock/tree/master/lib/webmock/http_lib_adapters

トラックバック - http://subtech.g.hatena.ne.jp/secondlife/20110615