crawlerシリーズの如く何度かAnemoneの話を書いています。Anemoneは割りと小さなモジュールなので、ソースを読めば直ぐに解ることが多いです。一方で、ドキュメントが充実しているとは言い難いので、少し違うことをしようとすると、ソース嫁という状態になります。今回のエントリーもそんな話の一つです。デフォルトストレージを変更するAnemoneのデフォルトストレージのデフォルトオプションは、nilです。この場合、どういう動作をするかというと、Anemone::Storage.Hashが指定されます。当然ながらクロール量に比例してメモリの使用量が増えます。すると、当然動いている端末もしくはサーバのメモリーを圧迫していくという結果になります。望ましくないので、本格的に使用する場合はストレージを変更した方が良いでしょう。Anemoneはストレージのオプションが豊富で、PStore(ファイル)やMongoDB,Sqlite3などを始めとして、TokyoCabinet,KyotoCabinet,Redisなどが使えます。mongoなどについては、使ってみたよという事例がちょくちょく出ているのですが、一番単純なPStore(ファイル)についての情報は見たことがないです。そんなこんなで、ちょこっと書いてみます。AnemoneでPStoreを利用する使い方は簡単です。起動時のオプションの中の:storegeで、Anemone::Storage.PStoreを指定するだけです。それで起動すると、以下のようなエラーが発生します。`<main>'端的にいうと、引数が足りませんよということです。どこに保存するかの情報がないということでしょう。オプションでは、ファイル等の指定するところがありません。したら良いのでしょうか?pstore.rbを見てみると、initializeでファイルを引数としています。end親クラスのpage_store.rbを見ると、次のようになっています。オプション変数をそのまま渡しているっぽいですね。end呼び元のcore.rbは、どうしているかというと、次の通りです。Anemone::Storage.Hash)ということで、次のような感じで保存先のファイルと一緒にオプションで指定したら良いです。Anemone:Storage.PStore('file.txt')下記が、それを踏まえたソースです。この場合、ファイルは実行したディレクトリに作成されます。ちなみにファイル名は.txtにしていますが、Mashal.dmp形式のバイナリになっている為、殆ど読めません。endend一方でストレージに保存しているものの、それを再利用するかというと別の話です。PStoreのイニシャライザを見ての通り、既存のファイルがあれば消してから作成しています。このあたりを何とかしたいのであれば、ライブラリに手を加えるしかないですね。訪問済みのページは訪れないとか、一定期間経過した場合のみ訪れるとか。まとめAnemoneはよく出来たモジュールですが、更新されなくなって久しいです。何かあったら、自分で調べましょうという話でした。はてなブログをはじめよう!dkfjさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。