最終更新: kitamomonga 2010年08月24日(火) 13:42:15履歴
「Fileクラスのオブジェクトを返すときに自動でディレクトリ掘ってディスクに保存する」という動作をするクラスです。
Mechanize#pluggable_parser に指定することを意図した添付クラス(サンプルクラス?)です。通常では使用する必要はありません。
require 'rubygems' require 'mechanize' # googleロゴのURL uri = URI.parse('http://www.google.co.jp/intl/ja/logos/Logo_60wht.gif') agent = Mechanize.new # ファイルがimage/gifだったらFileSaverクラスに渡すように設定 agent.pluggable_parser["image/gif"] = WWW::Mechanize::FileSaver # get の結果が gifなので ./www.google.co.jp/intl/ja/logos/Logo_60wht.gif に保存 agent.get(uri) # 返り値そのものは普通に Mechanize::File p agent.page.uri
残念ながら自動保存ディレクトリの細かい指定はできません。wget などのダウンローダーのような動作をさせたい場合は、自力で FileSaver の代わりのクラスを作って Mechanize#pluggable_parser に指定する必要があります。
Mechanize::File を継承しているので、Mechanize#get などの返り値そのものはふつうに Mechanize::File#uri や Mechanize::File#save_as が有効です。
URL に応じたネストしたディレクトリをカレントディレクトリ内に適切に作成して、Mechanize::File#save_as にファイル名を渡して保存します。
new された時点で自動で保存までされることに注意してください。また、save_as の上書き回避処理は行われません。