突然関係ないですけど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上で定期実行の設定をためしたい。