RDoc の オプションで :nodoc: が指定されてたので見つからなかった話

def self.convert_to_original_url(omission_url, limit = 10)
  raise ArgumentError, 'http redirect too deep' if limit == 0

  response = Net::HTTP.get_response(URI.parse(omission_url))
  case response
  when Net::HTTPSuccess then
    omission_url
  when Net::HTTPRedirection then
    convert_to_original_url(response["location"], limit - 1)
  else
    response.error!
  end

るりま見ながらこんなソースを書いてて、response.error ! が何をしているかを知りたくて、 Web上のドキュメントなんかをググって見てたんだけどどこにもない!!!

[10] pry(main)> n = Net::HTTPResponse.new('aaa', 'bbb', 'ccc')
=> #<Net::HTTPResponse bbb ccc readbody=false>
[11] pry(main)> n.method(:error!).source_location
=> ["/Users/***/.rbenv/versions/2.0.0-p247/lib/ruby/2.0.0/net/http/response.rb", 118]

Net::HTTPResponse クラスってことは分かってたので、 source_location メソッドを使って error! メソッドが記述されている場所を探す。

def error!   #:nodoc:
  raise error_type().new(@code + ' ' + @message.dump, self)
end

で見つけました。

これよく見ると #:nodoc: って記述があります。

この記述があるとドキュメントに書かれないみたいですね。

作成者があまり使用してほしくないという意図があるとかないとか。

まぁドキュメントに出てこないんだからソース読まないと見つからないか。