とあるサイトをスクレイピングしようとしてはまった。
irb(main):004:0> require 'mechanize'
irb(main):005:0> agent = Mechanize.new
irb(main):006:0> p agent.get('google.co.jp')
ArgumentError: absolute URL needed (not google.co.jp)
from /home/hogeuser/.rbenv/versions/2.2.0-rc1/lib/ruby/gems/2.2.0/gems/mechanize-2.7.3/lib/mechanize/http/agent.rb:651:in `resolve'
from /home/hogeuser/.rbenv/versions/2.2.0-rc1/lib/ruby/gems/2.2.0/gems/mechanize-2.7.3/lib/mechanize/http/agent.rb:223:in `fetch'
from /home/hogeuser/.rbenv/versions/2.2.0-rc1/lib/ruby/gems/2.2.0/gems/mechanize-2.7.3/lib/mechanize.rb:440:in `get'
from (irb):6
from /home/hogeuser/.rbenv/versions/2.2.0-rc1/bin/irb:11:in `<main>'
しかし、既に他のサイトをgetしていた場合、Mechanizeは相対パスを自動で補完しようとする。
irb(main):013:0> p agent.get('http://google.co.jp').uri
#<URI::HTTP http://www.google.co.jp/>
irb(main):014:0> p agent.get('google.co.jp').uri
Mechanize::ResponseCodeError: 404 => Net::HTTPNotFound for http://www.google.co.jp/google.co.jp -- unhandled response
from /home/hogeuser/.rbenv/versions/2.2.0-rc1/lib/ruby/gems/2.2.0/gems/mechanize-2.7.3/lib/mechanize/http/agent.rb:308:in `fetch'
from /home/hogeuser/.rbenv/versions/2.2.0-rc1/lib/ruby/gems/2.2.0/gems/mechanize-2.7.3/lib/mechanize.rb:440:in `get'
from (irb):14
from /home/hogeuser/.rbenv/versions/2.2.0-rc1/bin/irb:11:in `<main>'
この場合、
http://www.google.co.jp/google.co.jp
をgetしようとして404や403エラーになる。