特産地付近に住んでいると、産直所などでおいしい旬のものが安価に手に入ったりします。
例えば自分の場合には、リンゴの産地が近いので、Twitterでも食べたリンゴをつぶやいていたりします。
そんな中、半年もつぶやいていると食べたリンゴの履歴がたまってきているため、どの品種をどれだけ食べたのかを知りたくなりました。
そこで、Ruby + Highchartsを使ってHeroku上に作ってみましたので、作成時のメモを残します。
なお、悩んだところなどは量が多かったため、次回に回します。
追記
悩んだところについては、記事を書きました。
Ruby + Heroku + 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
■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) |