突然関係ないですけどrakeって熊手のことだったんですね。

さて簡単なクローラ&データ閲覧サイト作れないかと色々試してます。
前回の記事でrails newからherokuへのデプロイはできました。
次は定期実行するためのタスクを作ってみます。
独自のrakeタスクを定義してタスク上からDBへ書き込めればOK。
さらにそれをheroku上で実行したい。
結構簡単にできたので手順をメモ。
環境
この記事の通り作った直後の状態 blog.naichilab.com
手順
サンプル用にモデル作成
文字列を持つだけのSimpleLogってモデルを作った。
$ bundle exec rails g scaffold SimpleLog text:string $ bundle exec rake db:migrate $ bundle exec rails s
http://localhost:3000/simple_logsへアクセス

ブラウザから登録や編集できることが確認できた。
rakeタスク作成
とりあえずrails g
$ bundle exec rails g task simplelogs
lib/tasks/simplelogs.rakeが生成される。
現在時刻をSimpleLogに書き込むようにしてみる。
namespace :simplelogs do
desc "Generate simple log"
task :generate => :environment do
log = SimpleLog.new
log.text = Time.now.strftime('%Y年%m月%d日 %H:%M:%S')
log.save
end
end
rakeタスク一覧にでてくるか確認
$ bundle exec rake -vT 〜〜 rake simplelogs:generate # Generate simple log 〜〜
rakeタスク実行
普通に呼び出すだけ
$ bundle exec rake simplelogs:generate

※3回実行した
入ってる。
いい感じ。
herokuへアップロードと実行
herokuはconfig/routes.rbにrootの記述がないとエラーするみたい。
root 'simple_logs#index'
gitコミットしておく。
herokuへアップロードする
$ git push heroku master $ heroku run rake db:migrate $ heroku run rake simplelogs:generate $ heroku open

いい感じ〜。
収集するデータに合わせたDBを用意してゴリゴリとタスク作ればクローラ部分はできそうですね。
グラフで表示したりとか見せる部分はどうにでもなりそうだし。
次はheroku上で定期実行の設定をためしたい。