029-クロール状況を管理する方法について試行錯誤
各ブロガー別にサイトの更新状況をチェックするクローラーを動作させるという仕様を考えているため、どこまでクロール済かを管理する仕組みを作る必要があるかと思っています。
処理を待つ一連のジョブを管理するクラスとしてひとまずqueueというクラスを作りました。(なんかネーミングがよしっくり来てないので、もうちょっといいのが思いついたら変更する)
require 'rubygems' require 'mongoid' Mongoid.configure do |config| name = "test" host = "localhost" config.master = Mongo::Connection.new.db(name) config.slaves = [ Mongo::Connection.new(host, 27017, :slave_ok => true).db(name) ] config.persist_in_safe_mode = false end class Queue include Mongoid::Document field :nickname field :first_entry field :last_entry field :last_update end queue = Queue.new() # これ以降で実際のブロガー情報を登録してる。 queue.nickname = 'xxxxx' queue.first_entry = 'http://blog.pasonatech.co.jp/xxxxx/somepage1.html' queue.last_update = Time.now.strftime("%Y-%m-%d %H:%M:%S") queue.last_entry = 'http://blog.pasonatech.co.jp/xxxxx/somepage2.html' queue.save
xxxxというブロガーの方の初回エントリのURLと、最後にクロールした日付とそのURLをMongoDB上に格納出来ました。(ひとまず残りのブロガーの情報も同様の手順で登録する予定)
今後書きたいこと
- このqueueとcrawlerを連携させれば思い通りに動くかどうか確認
- こちらを参考に利用予定の本番環境( Heroku+MongoHQ)のセットアップ