定期的に動くなにかを Rails でつくりました。

定期的に動くなにかを Rails でつくりました。

http://13.ore-omae.com

twitter でロムしてる優れ技術者のなかには定期的に動く何かを飼っている人がおり、ワナビーとしてはやはり形から真似しなければなるまいと、とりあえずスクレイパーのたぐいをつくることにしました。

定期実行には Whenever

Rails の定期実行には Whenever という gem を使いました。

#config/schedule.rb 生成
wheneverize
#書きこまれる内容の確認
whenever
#crontab を更新する
whenever --update-crontab
#crontab から削除する
whenever --clear-crontab

Whenever や Rails 自体が動き続けるのではなく、config/schedule.rb に書いた内容にしたがって Whenever が実行内容をコーディネートして crontab によきにはからってくれるという感じです。

HTML 解析には Nokogiri

jQuery でもおなじみの CSS セレクターが使えます。

doc.css('ul.mdMain li a')

open-url で文字化け

charset 拾って parse して~とやってるとどうやっても文字化けしたので、バイナリから kconv でアレという感じにすると解決しました。

require 'open-uri'
require 'kconv'
page_html = open(page_url, "r:binary").read.toutf8