Ruby + Heroku + Highchartsで食べたリンゴの割合をグラフ化してみた

特産地付近に住んでいると、産直所などでおいしい旬のものが安価に手に入ったりします。
例えば自分の場合には、リンゴの産地が近いので、Twitterでも食べたリンゴをつぶやいていたりします。


そんな中、半年もつぶやいていると食べたリンゴの履歴がたまってきているため、どの品種をどれだけ食べたのかを知りたくなりました。
そこで、Ruby + Highchartsを使ってHeroku上に作ってみましたので、作成時のメモを残します。
なお、悩んだところなどは量が多かったため、次回に回します。


追記
悩んだところについては、記事を書きました。
Ruby + Heroku + Highchartsで食べたリンゴの割合をグラフ化してみた、時に悩んだことのまとめ - メモ的な思考的な




■2013/3/6時点

シナノゴールドを圧倒的に食べてますね。



■開発環境

■イメージ

「[リンゴ]」で始まるツイートをTwitterから引っ張ってきて、DBにため込んで、JSONでHighchartsに渡すような感じです。


■ローカルでの作業

基本的にはPadrinoのBlogチュートリアルの流れでした*1。そのため、気になったところを記載します。
Guides Blog Tutorial - Padrino Ruby Web Framework

各種ジェネレータ
# プロジェクト
padrino g project ringo_tabeta -a sqlite -d activerecord -t rspec -e haml -c sass -s jquery -b

# モデル
padrino g model apple name:string tweet_id:integer created_at:datetime tweet:string
padrino rake ar:migrate

# 管理画面
padrino g admin
bundle install
padrino rake ar:migrate
padrino rake seed

# 管理画面に、モデルを追加
padrino g admin_page apple

# コントローラー
padrino g controller apples get:index get:api get:delete

# Herokuで動かすためのRakefile生成
padrino rake gen
実装先
  • 初期データの投入: db/seeds.rb
  • DBの設定(ローカルはSQLite、HerokuはPostgreSQL): config/database.rb
  • Highcharts用のJavaScript: public/javascripts/application.js
  • Highchartsの色づけ: app/helpers/apples_helper.rb
  • Heroku上でRakeした時に、RSpec関連のエラー防止のためのパッチ先: spec/spec.rake

 参考:Padrino+MySQL環境をcloudControlに構築してみた - メモ的な思考的な

  • Herokuのジョブの実装先: tasks/gather_timeline.rake

 参考:

Herokuにアプリ作成 (Gitにはコミット済)
heroku login
heroku create ringo-tabetter --stack cedar
git push heroku master

■Git関連

Gitの管理対象から、公開されてはマズイ、APIKeyとSQLiteのファイルを外す

.gitignoreに以下を記載

api_key.yaml
db/*.db

■Herokuにアップしてからの作業

必要な環境変数の設定
# 設定
heroku config:add PADRINO_ENV=production
heroku config:add target_timeline_user=''
heroku config:add twitter_consumer_key=''
heroku config:add twitter_consumer_secret=''
heroku config:add twitter_oauth_token=''
heroku config:add twitter_oauth_token_secret=''

# 設定内容の確認
heroku config
初期データの投入
heroku run rake ar:migrate
heroku run rake seed
Heroku scheculeアドオンの設定

以前のCronアドオンから、Heroku Schedulerアドオンに切り替わったようですので、後者を使うようにしました。
参考:Heroku Schedulerアドオンがリリース - Force.com Blog Japan

heroku addons:add scheduler


上記をコマンドラインから設定した後、HerokuのGUI画面から設定します。

TASK rake gather_timeline
FREQUENCY Daily
NEXT RUN 11:00 (UTC)

*1:最終的には、チュートリアルでもHerokuへとアップしています