PostHeaderIcon Rubyを触ってみた : HTTP GET

ずっと気になっていたけど、触れられずにいたRubyを使ってみました。

意外と簡単に書けるものですね。普段はJava使いなのですが、コード量が圧倒的に短くかけそうです。

 

今回はopen-urlというライブラリを使ってみたのですが、多少引っかかったので、それも含めてまとめます。

 

コードは下記の通り。Windows 7環境で実行します。(コード自体はどの環境でも同じです。)

 


# コマンドラインから
# ruby open-uri.rb http://www.oreilly.co.jp
# のように実行

require 'open-uri'

# URLを実行時引数から入力
url = ARGV[0]

# URLに該当するWEBページのHTMLをダウンロードして表示
open(url){|connection|
 connection.each_line do |line|
 print line
 end
}

 

実行コマンドはソースコードの通り。

実行時引数で指定したURLに該当するHTMLファイルがダウンロードされてコンソールに表示されます。

 

まず、実行時引数ですが、Rubyの場合、ARGVという定数に入ってくるようです。

Cなどの言語では、引数はint main(char **argv)のように指定しますが、Rubyではそもそもmain関数などないので、予約された定数として入ってくるのですね。

 

Cとの違いで気をつけるべきは、配列のインデックスです。0番目からURLの引数がはいってきます。

 

もうひとつは、なぜか出て来る実行時エラーで、下のようなもの。

 

おそらく、Rubyの実行環境に入っているzlib.dllが古いのでしょう。

http://haraita9283.blog98.fc2.com/blog-entry-64.html で言及されていました。

 

そこで、zlibのサイト でzlib.dllをダウンロードしてきます。

 

一見、ソースコードしかないようですが、落ち着いて下の方までスクロールしていくと、

zlib for Windows 9x/NT/2000/XP/2003 (DLL version, plus related utilities)

のようなリンクがあると思います。この先からZIPファイルをダウンロードしてきて展開しましょう。

 

私の環境では、Windowsの32bitなので、dll32というフォルダ内のzlibwapi.dllを持ってきました。このままでは反応しないので、zlibwapi.dll => zlib.dllのように改名して、実行するディレクトリに持っていきます。

 

これでうごくかな?

 

いやー、それにしてもコードが短い。

openのあたりの構文も面白いですね。

 

Leave a Reply