Ruby の Mechanize の wiki のよてい

Mechanize::FileSaver


「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#uriMechanize::File#save_as が有効です。


Mechanize::FileSaver.new(uri=nil, response=nil, body=nil, code=nil)

URL に応じたネストしたディレクトリをカレントディレクトリ内に適切に作成して、Mechanize::File#save_as にファイル名を渡して保存します。
new された時点で自動で保存までされることに注意してください。また、save_as の上書き回避処理は行われません。

管理人/副管理人のみ編集できます