open-uriにどんなメソッドがあるか調べてみた。
通信関係はどのようになっているかよく分かりません。
なので、open-uriにはどのようなメソッドが存在しているのか調べてみました。
open-uriって?
httpをFileオブジェクトのような感じで扱えるライブラリ。
require 'open-uri' uri = "http://www.ruby-lang.org/" open(uri){|f| f.each{|l| puts l}} #File.open(file){|f| f.each{|l| puts l}} と似ている
どんなメソッドがあるか調べる。
ここのurlで調べてみた。
require 'open-uri' f=File.open(ENV["HOME"]+"/a") #何かのファイル。 safe_methods = [] uri = "http://d.hatena.ne.jp/trotr/" #uri = "http://www.google.co.jp" #googleでやってみたらすごい表示になっていた。 OpenURI.open_uri(uri) do |ou| targets = (ou.methods - f.methods) - %w{close! _close } i = 0 targets.each do |e| begin puts("#{i}: \"#{e }\": #{ou.send(e)}") #「3: <"MethodName>": メソッドの実行結果」という感じで出力する。 safe_methods << e i += 1 rescue next #puts $!; next end end p targets - safe_methods #例外が発生 = 呼べなかったメソッド。 end
結果
0: "charset": euc-jp 1: "meta": last-modifiedTue, 08 Jan 2008 05:52:47 GMTvaryAccept-EncodingdateTue, 08 Jan 2008 12:56:07 GMTcontent-typetext/html; charset=euc-jpserverApachetransfer-encodingchunked 2: "last_modified": Tue Jan 08 14:52:47 +0900 2008 3: "__getobj__": #<File:0xb7e4e6cc> 4: "base_uri": http://d.hatena.ne.jp/trotr/ 5: "delete": #<File:0xb7e4e6cc> 6: "length": 111892 7: "content_encoding": 8: "content_type_parse": text/htmlcharseteuc-jp 9: "status": 200OK 10: "size": 111892 11: "content_type": text/html ["method_missing", "__setobj__", "meta_add_field", "base_uri=", "status=", "unlink", "open"]
呼べなかったメソッドの例外
引数が足りないなどが原因だったみたい。
method_missing wrong number of arguments (0 for 1) __setobj__ wrong number of arguments (0 for 1) meta_add_field wrong number of arguments (0 for 2) base_uri= wrong number of arguments (0 for 1) status= wrong number of arguments (0 for 1) unlink can't convert nil into String open can't convert nil into String