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: って記述があります。
この記述があるとドキュメントに書かれないみたいですね。
作成者があまり使用してほしくないという意図があるとかないとか。
まぁドキュメントに出てこないんだからソース読まないと見つからないか。