blob: b871c55150cf913042f61d5dafc42ebe3703e343 [file] [log] [blame] [view]
---
published: false
layout: post
---
In this post we will demonstrate building a Druid application in Ruby. Code for this example is available [on github](https://github.com/rjurney/druid-application-development).
## Webstream Example
To setup Druid's webstream example, grab the Druid tarball at [http://static.druid.io/artifacts/releases/druid-services-0.5.54-bin.tar.gz](http://static.druid.io/artifacts/releases/druid-services-0.5.54-bin.tar.gz)
tar -zxvf druid-services-*-bin.tar.gz
cd druid-services-0.5.54
./run_example_server.sh
Enter webstream
## ruby-druid
The [ruby-druid project](https://github.com/madvertise/ruby-druid) from Madvertise provides Ruby connectivity with Druid. To install ruby-druid, you'll need to get the source:
git clone git@github.com:madvertise/ruby-druid.git
Then use bundler to build ruby-druid:
gem install bundler
bundle install
Next you'll need to copy the file dot_driplrc_example to .dripl and edit this file to include this line:
options :static_setup => { 'realtime/webstream' => 'http://localhost:8083/druid/v2/' }
To launch the repl, run:
bundle exec bin/dripl
Now you can query the webstream example:
long_sum(:added)[-7.days].granularity(:minute)
Or, to query in raw Ruby, run something like this:
bundle exec irb
client = Druid::Client.new('', {:static_setup => { 'realtime/webstream' => 'http://localhost:8083/druid/v2/' }})
query = Druid::Query.new('realtime/webstream').double_sum(:rows).granularity(:minute)
result = client.send(query)
puts result
["2013-10-03T23:29:00.000Z":{"rows"=>3124.0}, "2013-10-03T23:30:00.000Z":{"rows"=>73508.0}, "2013-10-03T23:31:00.000Z":{"rows"=>26791.0}, "2013-10-03T23:32:00.000Z":{"rows"=>29966.0}, "2013-10-03T23:33:00.000Z":{"rows"=>21450.0}]
Thats it! Simple enough. In our next post we'll look at building a full-blown web application over Druid.