fastladder を読む (2) - app/model/feed.rb
icon メソッドはパスの解決。これはHelperに書くかModelに書くかいつも迷ってしまうんですが、こんなものなのかな?フルパスで書いてあるので、おそらく img src などに使うんだろうけど。
to_json メソッド。これはとりあえずパス。わざわざ上書きしてるのだから、おそらくAjaxで使っているのかと。
%w(title description).each do |s| result[s.to_sym] = (self.send(s) || "").purify_html end %w(feedlink link image).each do |s| result[s.to_sym] = (self.send(s) || "").purify_uri end
で、purify_* はいわゆるエスケープ作業。lib/string_utils.rb に定義があって、Stringクラスにメソッドを追加しています。ちなみに、この lib/string_utils.rb で
def sanitize_uri begin uri = URI.parse(self) rescue URI::Error => e return "" end case uri when URI::Generic, URI::HTTP, URI::HTTPS, URI::FTP, URI::MailTo return uri.normalize.to_s else return "" end end
なのもあるので、URI は場合によっては消える可能性が... feedlink,link,image のどれにもvalidationがついていないので後で動かして確認する。
subscribed は メンバーがそのFeedを購読しているかどうかを確認するメソッド。member.subscribed(feed) に投げるだけ・・・ん、subscribed, -ed? まあいいや。
update_subscribers_count は購読メンバー数を更新するメソッド。
で、メインは crawl メソッド。
def crawl crawl_status = self.crawl_status CrawlStatus.transaction do if crawl_status.status != Crawler::CRAWL_OK return end crawl_status.update_attribute(:status, Crawler::CRAWL_NOW) end begin Crawler::crawl(self) rescue => ex logger.error "Crawler error: #{ex}" ensure crawl_status.update_attribute(:status, Crawler::CRAWL_OK) end end
ん、、、、transaction? これはあってもなくても、の話で、trunk のほうは 3/7 時点で無くなってます。で、Crawlerをみると。