今回はこちらを参考にRailsアプリケーションからTreasure Dataへデータをインポートするプログラムを作成してみましょう。内容は5月に紹介しましたTreasure Dataのデータを利用するプログラム(Ruby編)の復習にもなりますのでぜひチャレンジしてみてください。
環境
CentOS release 6.4 (Final)
事前準備
- Rails4をインストール(GIST)
- Treasure Data Toolbeltをインストール(https://toolbelt.treasure-data.com/)
Railsアプリケーションを新規作成
$ rails new sample1 $ cd sample1 $ echo "gem 'execjs'" >> Gemfile $ echo "gem 'therubyracer'" >> Gemfile $ rails server (起動)
起動確認
ブラウザでhttps://localhost:3000/にアクセスして、下記のような画面が出たら成功です。確認したら、Ctrl+Cでいったん終了させてください。
Treasure Dataの設定
APIキーの取得
$ td apikey:show
/etc/td-agent/td-agent.confを修正
# Treasure Data Input and Output <source> type forward port 24224 </source> <match td.*.*> type tdlog apikey YOUR_API_KEY auto_create_table buffer_type file buffer_path /var/log/td-agent/buffer/td use_ssl true flush_interval 30s </match>
td-agentを再起動し、tdの設定をRailsアプリケーションに設定し、scaffoldでコードを自動生成する。
$ sudo /etc/init.d/td-agent start $ cd ~/sample1/ $ echo "gem 'td', '~> 0.10.6'">>Gemfile $ bundle install $ rails generate scaffold person name:string $ rake db:migrate RAILS_ENV=development $ rails s
app/controllers/people_controller.rb にログ送信部分の書き込み(赤字の部分を追加してください。)
# POST /people # POST /people.json def create @person = Person.new(person_params) send_td(@person.name) respond_to do |format| ・・・・ end private # Treasure Dataへデータを送信 def send_td(name) time = Time.now TD.event.post('people',{:name=>name,:time=>time}) end
実行
以下の手順で確認します。
- https://localhost:3000/peopleにアクセスする
- New Personをクリック
- Nameに何か入力して、Create Personをクリック
- 1分ほど待つ
- 端末で確認
Ruby,Java,JDBC,RailsとTreasure Dataへのデータ送信方法を紹介してきましたが、これからもさまざまな言語やアプリケーションからのデータ送信方法を紹介していきますのでお楽しみに。