TLにHerokuでTreasure Dataが簡単に使える的なのが流れてきて、
ブログみてたらハンパ無く楽チンくさいのでやってみることにしました↓
Just STDOUT: The Simplest, Most Flexible Way To Collect Application Data On Heroku | Treasure Data Blog
■ 試したアプリ
個人的に2006年くらいにAward on RailsというRORで作ったサービスのコンテンストがあって、
当時、iKnow!のスッゲーしょぼい版みたいなのを作ったのですが、
数年前にHerokuに上げたっきりなーんもしてない感じになってるので、そいつを使ってみる感じで。
#ちなみにロゴのデザインは@445ticにしてもらいました。よしこちゃんThx!
■ Herokuの設定
↓のGet Add-onsってとこからTreasureData用のアドオンを追加します。
↓検索すると引っかかってくるのでソレを追加して、
↓nanoで作ればお金かけずに試せます。
↓が、請求情報が必要と怒られます。
↓ってことでクレジットカード情報を入力します。この辺はAWSもそんな感じですやね。
↓めでたしめでたし。
■ Herokuからソース取得&アプリ変更&デプロイ
いつもコレ系のブログは昼休みとか定時後に会社のUbuntuで書いてるのですが、今回は自宅のMacBookAirで。
ってことで、HerokuのToolbeltをインストールするところから。
認証とか鍵ファイルをホゲホゲしたり。
$heroku login Enter your Heroku credentials. Email: xxxxx@xxx.com Password (typing will be hidden): Authentication successful. $heroku keys:add Found existing public key: /Users/eiji/.ssh/id_rsa.pub Uploading SSH public key /Users/eiji/.ssh/id_rsa.pub... done
んでもって、Herokuからgitでソースコード落としてきます。
$git clone git@heroku.com:together-shi-yo-ze.git Cloning into 'together-shi-yo-ze'... The authenticity of host 'heroku.com (50.19.85.156)' can't be established. RSA key fingerprint is 8b:48:5e:67:0e:c9:16:47:32:f2:87:0c:1f:c8:60:ad. Are you sure you want to continue connecting (yes/no)?yes Warning: Permanently added 'heroku.com,50.19.85.156' (RSA) to the list of known hosts. remote: Counting objects: 212, done. remote: Compressing objects: 100% (171/171), done. remote: Total 212 (delta 59), reused 164 (delta 28) Receiving objects: 100% (212/212), 141.63 KiB | 60 KiB/s, done. Resolving deltas: 100% (59/59), done.
controllerのコードに手入れて、putsで↓こんな風にしてやります。
@login = current_user[:login] td_str = "@[service.users] { "name": "#{@login}" }" puts td_str
太字のところ追加しただけ。
あとはgit commit -am〜とかやってやった後に、
$git push origin master Counting objects: 9, done. Delta compression using up to 4 threads. Compressing objects: 100% (5/5), done. Writing objects: 100% (5/5), 440 bytes, done. Total 5 (delta 4), reused 0 (delta 0) -----> Removing .DS_Store files -----> Ruby/Rails app detected -----> WARNING: Detected Rails is not declared in either .gems or Gemfile Scheduling the install of Rails 2.3.5. See http://devcenter.heroku.com/articles/gems for details on specifying gems. -----> Configure Rails to log to stdout Installing rails_log_stdout... done -----> Compiled slug size: 6.0MB -----> Launching... done, v19 http://together-shi-yo-ze.heroku.com deployed to Heroku To git@heroku.com:together-shi-yo-ze.git f2312ca..a50a2fa master -> master
こんな感じでアプリ作業は終了です。
■ Treasure Dataの設定
アプリの改修は終わったので、今度はTreasureDataにデータベースとテーブルを作ります。
herokuコマンドにプラグインを追加してTreasureDataのコマンドを叩けるようにします。
$heroku plugins:install https://github.com/treasure-data/heroku-td.git Installing heroku-td... done $heroku -h | grep td td # manage Treasure Data hadoop service
んで、TreasureDataにデータベースとテーブルを作るべぃと、、、
$heroku td ! Local `td` command could not be located. ! To install `td` command, visit and download it from http://toolbelt.treasure-data.com/
アレ。。あ、そもそもtdコマンド自体がこのマシンに入ってねーやって話で。
って事で、gemでtd入れようとしたら、、、あぁ、、Rubyのバージョンとかすかね。。
$sudo gem install td Password: Building native extensions. This could take a while... ERROR: Error installing td: ERROR: Failed to build gem native extension. /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ruby.h Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/msgpack-0.4.7 for inspection. Results logged to /Library/Ruby/Gems/1.8/gems/msgpack-0.4.7/ext/gem_make.out
Rubyのバージョンあげようとしたら、、、アレ、、こいつMacPortsも入ってねーですか?
$port list ruby -bash: port: command not found
MacPortsよりもHomebrewの方がイイよん的な噂を聞くのでコレを気に。。
ホームーページみてると↓だけでイイみたいだし。
↓その通りに叩いてみたら、、、
$ruby -e "$(curl -fsSkL raw.github.com/mxcl/homebrew/go)" ==> This script will install: /usr/local/bin/brew /usr/local/Library/... 〜略〜 ==> Installation successful! You should run `brew doctor' *before* you install anything. Now type: brew help
イイ感じですヽ(´▽`)ノ
が、portsで他のRubyがいるじゃねーかって怒られた…。
$brew install ruby Warning: No developer tools installed You should install the Command Line Tools: http://connect.apple.com Warning: It appears you have MacPorts or Fink installed. Software installed with other package managers causes known problems for Homebrew. If a formula fails to build, uninstall MacPorts/Fink and try again.
よくよく見てみると、/opt/local/bin/portってのは存在してたので、
sudoしつつ、とりあえずportでselfupdateしてRubyのバージョン上げる事にしよかな、と。
#ってかRubyのバージョンが問題なのかどうか分かってないわけですが。。
そしたら、、、もうなんなのよ。。。
Error: /opt/local/bin/port: port selfupdate failed: Error installing new MacPorts base: command execution failed
ググってくとXCodeが入ってねーからとかそんな話になってきたので、、XCode入れる事にします。
3GのPocketWifi経由で落としてきたので死ぬほど時間かかりましたけど、
XCode入れたところで、何も変わりませんでしたよ、とw
更にググってくと、どうもXCodeだけじゃなくてXCode Toolsがどうのって話らしい。
そこまでしてMacPortsにこだわりないので、、、
brewのmanみてたらinstallに–forceってあったので、この際それで。。
$brew install ruby --force Warning: It appears you have MacPorts or Fink installed. Software installed with other package managers causes known problems for Homebrew. If a formula fails to build, uninstall MacPorts/Fink and try again. ==> Installing ruby dependency: readline ==> Downloading http://ftpmirror.gnu.org/readline/readline-6.2.tar.gz ######################################################################## 100.0% ==> Patching patching file callback.c 〜略〜
なんかイイ感じっす。
ってかHomebrewって何これ、ジョッキの絵出てきてんじゃん。ちょーナイスw
無事インストールが終わって結果をトレースしてたら、
NOTE: By default, gem installed binaries will be placed into: /usr/local/opt/ruby/bin You may want to add this to your PATH.
とかって言われたので、↓にバッツリ入れてやりました。
$sudo vi /etc/paths
$echo $PATH /usr/local/opt/ruby/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin $ruby -v ruby 1.9.3p374 (2013-01-15 revision 38858) [x86_64-darwin12.2.1]
ようやく、tdコマンドのインストール。
make sh: make: command not found
(゚Д゚)ハァ? ちっくしょー、make入ってねーってどんなん…。
ググってくと、XCodeのCommand Line Toolsってのが必要らしいって事で、
XCode起動してPreferencesからDownloadの↓のところでInstallしやす。
ようやくtdコマンドインストールぢゃ!
$sudo gem install td Password: Building native extensions. This could take a while... Fetching: yajl-ruby-1.1.0.gem (100%) Building native extensions. This could take a while... Fetching: hirb-0.7.1.gem (100%) Fetching: parallel-0.5.21.gem (100%) Fetching: json-1.7.6.gem (100%) Building native extensions. This could take a while... Fetching: td-client-0.8.45.gem (100%) Fetching: fluent-logger-0.4.4.gem (100%) Fetching: td-logger-0.3.18.gem (100%) Fetching: td-0.10.70.gem (100%) Successfully installed msgpack-0.4.7 Successfully installed yajl-ruby-1.1.0 Successfully installed hirb-0.7.1 Successfully installed parallel-0.5.21 Successfully installed json-1.7.6 Successfully installed td-client-0.8.45 Successfully installed fluent-logger-0.4.4 Successfully installed td-logger-0.3.18 Successfully installed td-0.10.70 9 gems installed
あー、入った入った。
そしてheroku td。
$heroku td usage: td [options] COMMAND [args]
だんだんソレっぽくなってきましたね。
いよいよTreasureDataにテーブルを作ります。
$heroku td db:create service Database 'service' is created. Use 'td table:create service
コメント